{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "nbsphinx": "hidden"
   },
   "source": [
    "# Realization of Non-Recursive Filters\n",
    "\n",
    "*This jupyter notebook is part of a [collection of notebooks](../index.ipynb) on various topics of Digital Signal Processing. Please direct questions and suggestions to [Sascha.Spors@uni-rostock.de](mailto:Sascha.Spors@uni-rostock.de).*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Fast Convolution\n",
    "\n",
    "The straightforward convolution of two finite-length signals $x[k]$ and $h[k]$ is a numerically complex task. This has led to the development of various techniques with considerably lower complexity. The basic concept of the *fast convolution* is to exploit the correspondence between the convolution and the scalar multiplication in the frequency domain."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Convolution of Finite-Length Signals\n",
    "\n",
    "The convolution of a causal signal $x_L[k]$ of length $L$ with a causal impulse response $h_N[k]$ of length $N$ is given as\n",
    "\n",
    "\\begin{equation}\n",
    "y[k] = x_L[k] * h_N[k] = \\sum_{\\kappa = 0}^{L-1} x_L[\\kappa] \\; h_N[k - \\kappa] = \\sum_{\\kappa = 0}^{N-1} h_N[\\kappa] \\; x_L[k - \\kappa]\n",
    "\\end{equation}\n",
    "\n",
    "where $x_L[k] = 0$ for $k<0 \\wedge k \\geq L$ and $h_N[k] = 0$ for $k<0 \\wedge k \\geq N$. The resulting signal $y[k]$ is of finite length $M = N+L-1$. The computation of $y[k]$ for $k=0,1, \\dots, M-1$ requires $M \\cdot N$ multiplications and $M \\cdot (N-1)$ additions. The computational complexity of the convolution is consequently [in the order of](https://en.wikipedia.org/wiki/Big_O_notation) $\\mathcal{O}(M \\cdot N)$. Discrete-time Fourier transformation (DTFT) of above relation yields\n",
    "\n",
    "\\begin{equation}\n",
    "Y(e^{j \\Omega}) = X_L(e^{j \\Omega}) \\cdot H_N(e^{j \\Omega})\n",
    "\\end{equation}\n",
    "\n",
    "Discarding the effort of transformation, the computationally complex convolution is replaced by a scalar multiplication with respect to the frequency $\\Omega$. However, $\\Omega$ is a continuous frequency variable which limits the numerical evaluation of this scalar multiplication. In practice, the DTFT is replaced by the discrete Fourier transformation (DFT). Two aspects have to be considered before a straightforward application of the DFT\n",
    "\n",
    "1. The DFTs $X_L[\\mu]$ and $H_N[\\mu]$ are of length $L$ and $N$ respectively and cannot be multiplied straightforwardly\n",
    "    \n",
    "2. For $N = L$, the multiplication of the two spectra $X_L[\\mu]$ and $H_L[\\mu]$ would result in the [periodic/circular convolution](https://en.wikipedia.org/wiki/Circular_convolution) $x_L[k] \\circledast_L h_L[k]$ due to the periodicity of the DFT. Since we aim at realizing the linear convolution $x_L[k] * h_N[k]$ with the DFT, special care has to be taken to avoid cyclic effects."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Linear Convolution by Periodic Convolution\n",
    "\n",
    "The periodic convolution of the two signals $x_L[k]$ and $h_N[k]$ is defined as\n",
    "\n",
    "\\begin{equation}\n",
    "x_L[k] \\circledast_M h_N[k] = \\sum_{\\kappa=0}^{M-1} \\tilde{x}_M[k - \\kappa] \\; \\tilde{h}_M[\\kappa]\n",
    "\\end{equation}\n",
    "\n",
    "where the periodic continuations $\\tilde{x}_M[k]$ of $x_L[k]$ and $\\tilde{h}_M[k]$ of $h_N[k]$ with period $M$ are given as\n",
    "\n",
    "\\begin{align}\n",
    "\\tilde{x}_M[k] &= \\sum_{m = -\\infty}^{\\infty} x_L[m \\cdot M + k] \\\\\n",
    "\\tilde{h}_M[k] &= \\sum_{m = -\\infty}^{\\infty} h_N[m \\cdot M + k]\n",
    "\\end{align}\n",
    "\n",
    "The result of the circular convolution has a periodicity of $M$.\n",
    "\n",
    "To compute the linear convolution by the periodic convolution one has to take care that the result of the linear convolution fits into one period of the periodic convolution. Hence, the periodicity has to be chosen as $M \\geq N+L-1$. This can be achieved by zero-padding of $x_L[k]$ and $h_N[k]$ to a total length of $M$\n",
    "\n",
    "\\begin{align}\n",
    "x_M[k] &= \\begin{cases}\n",
    "x_L[k] & \\mathrm{for} \\; k=0, 1, \\dots, L-1 \\\\\n",
    "0 & \\mathrm{for} \\; k=L, L+1, \\dots, M-1\n",
    "\\end{cases}\n",
    "\\\\\n",
    "h_M[k] &= \\begin{cases}\n",
    "h_N[k] & \\mathrm{for} \\; k=0, 1, \\dots, N-1 \\\\\n",
    "0 & \\mathrm{for} \\; k=N, N+1, \\dots, M-1\n",
    "\\end{cases}\n",
    "\\end{align}\n",
    "\n",
    "This results in the desired equality of linear and periodic convolution\n",
    "\n",
    "\\begin{equation}\n",
    "x_L[k] * h_N[k] = x_M[k] \\circledast_M h_M[k]\n",
    "\\end{equation}\n",
    "\n",
    "for $k = 0,1,\\dots, M-1$ with $M = N+L-1$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Example - Linear by periodic convolution\n",
    "\n",
    "The following example computes the linear, periodic and linear by periodic convolution of a rectangular signal $x[k] = \\text{rect}_L[k]$ of length $L$ with a triangular signal $h[k] = \\Lambda_N[k]$ of length $N$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAE9CAYAAAABG1OhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAojklEQVR4nO3de1iUdd7H8c/IYdAU8pCAioZPlgfyBJrgoh0Uc41OXk+2VmrisxGWBzpJdjCfErPWsFLMNWNrzdjWrLZlVa5KNG0LyCkzt3IzoRzkgRLREhTv5w8vZpsA5YfCjM77dV1zXc3v/n3v+Q73L+rDfc89NsuyLAEAAAAAGq2VpxsAAAAAgLMNQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoAAAAADBGkAAAAAMAQQQoA0Ow++ugj3XDDDerevbvsdrtCQ0MVGxure+65xzUnKytLNptN3377reca/YUz3c+UKVNks9lks9kUFRXltq2iokKtWrVSRkZGg/Vvvvmmq95ms6mgoOCM9AUAaBqCFACgWf39739XXFycDh48qEWLFmnjxo1asmSJhg8fruzsbNe8cePG6cMPP1R4eLgHu21eYWFh+vDDD/Xqq6+6jRcUFMiyLA0ZMqTB2pEjR+rDDz/UQw891NxtAgAawd/TDQAAzm2LFi1SZGSkNmzYIH////xn5+abb9aiRYtczy+44AJdcMEFnmixxdjtdg0bNqzOeEFBgfz9/TV48OAGa9u3b69hw4bpX//6V3O2CABoJM5IAQCaVXl5uTp16uQWomq1avWf/ww1dCndW2+9pf79+8tut6tnz55asmSJ5s2bJ5vN5ppT+3znzp363e9+p5CQEIWGhmrq1KmqqKhw29/u3bt1++23q1evXmrTpo26du2qxMRE7dixo0nvz+l0qm3btrr55pvdxt955x0FBARo7ty5p9xHfn6+oqKi1Lp1a0mSZVl65plnFBQUpDlz5qimpqZJvQEAmg9BCgDQrGJjY/XRRx9pxowZ+uijj3T06NFG165fv1433nijOnbsqOzsbC1atEhr1qzRn/70p3rnjx8/XhdffLHWrl2rOXPm6NVXX9Xs2bPd5uzbt08dO3bUwoULtX79ei1dulT+/v667LLL9OWXXxq/v/DwcN1///36y1/+osLCQknSpk2b9N///d+688479cQTT5xyHwUFBa7L+srKypSYmKgnnnhC69at08KFC+Xn52fcFwCgeXFpHwCgWS1cuFD/+te/9Nxzz+m5555TQECAhgwZosTERN11111q27Ztg7WPPPKIunbtqg0bNigwMFCSdPXVV+vCCy+sd35SUpLuu+8+SdKoUaO0e/durVq1Si+++KLrDNaIESM0YsQIV01NTY3GjRunfv366YUXXtDixYuN3+O9996rF154QQ888IDS09N17bXX6ne/+52WLFlyytqysjLt3btXQ4cO1ebNmzVx4kRdeOGFcjgc6tatm3EvAICWwRkpAECz6tixo7Zs2aL8/HwtXLhQ1113nb766iulpaXp0ksvVVlZWb11hw8fVkFBga6//npXiJKktm3bKjExsd6aa6+91u15//79deTIEZWWlrrGjh07pgULFqhv374KDAyUv7+/AgMD9fXXX2vXrl1Neo9t2rTR448/rnfffVdXXHGFxo4dqz/+8Y9ulx82JD8/X5KUm5urq666ShMnTtSmTZsIUQDg5TgjBQBoETExMYqJiZEkHT16VA888ICeeeYZLVq0yO2mE7V+/PFHWZal0NDQOtvqG5NOhLZfstvtkqSff/7ZNZaamqqlS5fqgQce0MiRI9W+fXu1atVK06ZNc5tn6uKLL5Yk2Ww2ZWVlNfpyvIKCAgUFBSknJ0cjRoyo92cBAPA+nJECALS4gIAAPfroo5Kkzz//vN457du3l81m0/79++tsKykpafJr//nPf9akSZO0YMECjRkzRkOHDlVMTEyDZ8Yaw+Fw6JprrtHw4cN16NAhrVq1qtG1BQUFGjRokP76179q8+bNSktLa3IfAICWQ5ACADQrp9NZ73jtZXRdunSpd/t5552nmJgYvfnmm6qurnaNHzp0SO+8806T+7HZbK4zVbX+/ve/6/vvv2/S/r788kuNGTNGsbGxev/993Xddddp3rx5de4W2JD8/HxFR0drzJgx+uMf/6iFCxdq6dKlTeoFANByuLQPANCsxowZo27duikxMVG9e/fW8ePH5XA49Ic//EFt27bVzJkzG6ydP3++xo0bpzFjxmjmzJmqqanRU089pbZt2+qHH35oUj/XXHONsrKy1Lt3b/Xv31+FhYV66qmnmvSZpG+//VajRo3SJZdcorVr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N1cHDhxQTEyMbrnlFiUmJurZZ59t2psCAAAAgEZo8hfyvvLKKxo6dKhWrlzp+t6nXbt26ZprrlG/fv2a3FBKSopSUlLq3ZaVlVVnrHfv3nUuBwQAAACA5tTkIHX++edr7dq1GjlypC699FL9+OOPuvnmm/X73/9eTz755JnsEQAAAAC8ilGQuu666zRw4EANGjRIAwcO1KWXXqqlS5dq3LhxOnLkiJYuXarJkyc3V68AAAAA4BWMglSvXr20detWLVu2TOXl5Tr//PM1YMAAWZalW265RQMHDtTRo0cVEBDQXP0CAAAAgMcZBamnn37a9c/fffedHA6HHA6HOnbsqHfffVcrV66Uv7+/evfurU8//fSMNwsAAAAA3qDJn5Hq1q2bunXrpmuuucY1dujQIW3fvl2fffbZGWkOAAAAALyR0e3PP/vsMx0/frzB7W3btlV8fLymT58uSdq5c2eTv1MKAAAAALyVUZAaNGiQysvLGz0/NjbW7XufAAAAAOBcYHRpn2VZevjhh9WmTZtGza+urm5SUwAAAADgzYyC1IgRI/Tll182en5sbKxat25t3BQAAAAAeDOjILVp0ybXPxcXFysiIuJM9wMAAAAAXs/oM1K/1Lt3bz388MP66aefzmQ/AAAAAOD1mhykcnNztXHjRl100UV66aWXzmRPAAAAAODVmhyk4uLi9NFHH2nhwoV65JFHNGjQILdL/wAAAADgXNXkIFVr0qRJ+uqrr5SYmKhx48bphhtu0O7du89EbwAAAADglU47SEknbouekJCg3//+93r77bcVFRWle+65R5WVlWdi9wAAAADgVYzu2vdLy5cvV35+vvLz87Vr1y75+fmpf//+mj59ugYOHKjVq1erb9++WrdunWJiYs5kzwAAAADgUU0OUk888YSGDRumyZMna9iwYYqJiZHdbndtnzp1qhYsWKApU6bo888/PyPNAgAAAIA3aHKQKi4uPuWcpKQkPfzww019CQAAAADwSmfkM1IN6dy5s957773mfAkAAAAAaHHNGqRsNptGjhzZnC8BAAAAAC2uWYMUAAAAAJyLCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGCFIAAAAAYIggBQAAAACGvC5ILVu2TJGRkQoKClJ0dLS2bNnSqLqtW7fK399fAwcObN4GAQAAAPg8rwpS2dnZmjVrlubOnavt27crPj5eY8eOVVFR0UnrKioqNGnSJF111VUt1CkAAAAAX+ZVQWrx4sVKSkrStGnT1KdPH2VkZCgiIkKZmZknrbvjjjs0ceJExcbGtlCnAAAAAHyZ1wSp6upqFRYWKiEhwW08ISFB27Zta7DupZde0r///W89+uijjXqdqqoqHTx40O0BAAAAACa8JkiVlZWppqZGoaGhbuOhoaEqKSmpt+brr7/WnDlztHr1avn7+zfqddLT0xUSEuJ6REREnHbvAAAAAHyL1wSpWjabze25ZVl1xiSppqZGEydO1GOPPaaLL7640ftPS0tTRUWF61FcXHzaPQMAAADwLY07jdMCOnXqJD8/vzpnn0pLS+ucpZKkyspKFRQUaPv27brrrrskScePH5dlWfL399fGjRt15ZVX1qmz2+2y2+3N8yYAAAAA+ASvOSMVGBio6Oho5ebmuo3n5uYqLi6uzvzg4GDt2LFDDofD9UhOTtYll1wih8Ohyy67rKVaBwAAAOBjvOaMlCSlpqbqtttuU0xMjGJjY7VixQoVFRUpOTlZ0onL8r7//nu9/PLLatWqlaKiotzqO3furKCgoDrjAAAAAHAmeVWQmjBhgsrLyzV//nw5nU5FRUUpJydHPXr0kCQ5nc5TfqcUAAAAADQ3rwpSkpSSkqKUlJR6t2VlZZ20dt68eZo3b96ZbwoAAAAAfsFrPiMFAAAAAGcLghQAAAAAGCJIAQAAAIAhghQAAAAAGCJIAQAAAIAhghQAAAAAGCJIAQAAAIAhghQAAAAAGCJIAQAAAIAhghQAAAAAGCJIAQAAAIAhghQAAAAAGCJIAQAAAIAhghQAAAAAGCJIAQAAAIAhghQAAAAAGCJIAQAAAIAhghQAAAAAGCJIAQAAAIAhghQAAAAAGCJIAQAAAIAhghQAAAAAGCJIAQAAAIAhghQAAAAAGCJIAQAAAIAhghQAAAAAGCJIAQAAAIAhghQAAAAAGCJIAQAAAIAhghQAAAAAGCJIAQAAAIAhrwtSy5YtU2RkpIKCghQdHa0tW7Y0OPeNN97Q6NGjdcEFFyg4OFixsbHasGFDC3YLAAAAwBd5VZDKzs7WrFmzNHfuXG3fvl3x8fEaO3asioqK6p2/efNmjR49Wjk5OSosLNQVV1yhxMREbd++vYU7BwAAAOBLvCpILV68WElJSZo2bZr69OmjjIwMRUREKDMzs975GRkZuv/++zVkyBD16tVLCxYsUK9evfS3v/2thTsHAAAA4Eu8JkhVV1ersLBQCQkJbuMJCQnatm1bo/Zx/PhxVVZWqkOHDg3Oqaqq0sGDB90eAAAAAGDCa4JUWVmZampqFBoa6jYeGhqqkpKSRu3jD3/4gw4fPqybbrqpwTnp6ekKCQlxPSIiIk6rbwAAAAC+x2uCVC2bzeb23LKsOmP1WbNmjebNm6fs7Gx17ty5wXlpaWmqqKhwPYqLi0+7ZwAAAAC+xd/TDdTq1KmT/Pz86px9Ki0trXOW6teys7OVlJSk119/XaNGjTrpXLvdLrvdftr9AgAAAPBdXnNGKjAwUNHR0crNzXUbz83NVVxcXIN1a9as0ZQpU/Tqq69q3Lhxzd0mAAAAAHjPGSlJSk1N1W233aaYmBjFxsZqxYoVKioqUnJysqQTl+V9//33evnllyWdCFGTJk3SkiVLNGzYMNfZrNatWyskJMRj7wMAAADAuc2rgtSECRNUXl6u+fPny+l0KioqSjk5OerRo4ckyel0un2n1AsvvKBjx45p+vTpmj59umt88uTJysrKaun2AQAAAPgIrwpSkpSSkqKUlJR6t/06HG3atKn5GwIAAACAX/Gaz0gBAAAAwNmCIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGCIIAUAAAAAhghSAAAAAGDI64LUsmXLFBkZqaCgIEVHR2vLli0nnZ+Xl6fo6GgFBQWpZ8+eWr58eQt1CgAAAMBXeVWQys7O1qxZszR37lxt375d8fHxGjt2rIqKiuqdv2fPHv32t79VfHy8tm/frgcffFAzZszQ2rVrW7hzAAAAAL7E39MN/NLixYuVlJSkadOmSZIyMjK0YcMGZWZmKj09vc785cuXq3v37srIyJAk9enTRwUFBXr66ac1fvx4o9c+/tNPOv5TkHHPx6uPyX6s6j/7OGb2I6Xes/Xe0AP1HENfr/eGHqg/t46hZVlGtQDQFDbLS37bVFdXq02bNnr99dd1ww03uMZnzpwph8OhvLy8OjUjRozQoEGDtGTJEtfYunXrdNNNN+mnn35SQEBAnZqqqipVVVW5nldUVKh79+56r2dPtW3ld4bfFQAAaGld331Pbc8P9nQbAM5CBw8eVEREhA4cOKCQkJCTzvWaM1JlZWWqqalRaGio23hoaKhKSkrqrSkpKal3/rFjx1RWVqbw8PA6Nenp6XrsscfqjF/5zTen0T0AAPAaPSI83QGAs1xlZeXZE6Rq2Ww2t+eWZdUZO9X8+sZrpaWlKTU11fX8wIED6tGjh4qKik75wwKaS+1fP4qLixUczF9R0fJYg/AGrEN4GmsQlmWpsrJSXbp0OeVcrwlSnTp1kp+fX52zT6WlpXXOOtUKCwurd76/v786duxYb43dbpfdbq8zHhISwr8w8Ljg4GDWITyKNQhvwDqEp7EGfVtjT654zV37AgMDFR0drdzcXLfx3NxcxcXF1VsTGxtbZ/7GjRsVExNT7+ejAAAAAOBM8JogJUmpqalauXKlVq1apV27dmn27NkqKipScnKypBOX5U2aNMk1Pzk5WXv37lVqaqp27dqlVatW6cUXX9S9997rqbcAAAAAwAd4zaV9kjRhwgSVl5dr/vz5cjqdioqKUk5Ojnr06CFJcjqdbt8pFRkZqZycHM2ePVtLly5Vly5d9Oyzzxrd+txut+vRRx+t93I/oKWwDuFprEF4A9YhPI01CBNec/tzAAAAADhbeNWlfQAAAABwNiBIAQAAAIAhghQAAAAAGCJIAQAAAIAhnw9Sy5YtU2RkpIKCghQdHa0tW7Z4uiWcwzZv3qzExER16dJFNptNb775ptt2y7I0b948denSRa1bt9bll1+unTt3eqZZnHPS09M1ZMgQtWvXTp07d9b111+vL7/80m0OaxDNLTMzU/3793d94WlsbKz+8Y9/uLazBtHS0tPTZbPZNGvWLNcY6xCN4dNBKjs7W7NmzdLcuXO1fft2xcfHa+zYsW63WAfOpMOHD2vAgAF6/vnn692+aNEiLV68WM8//7zy8/MVFham0aNHq7KysoU7xbkoLy9P06dP1z//+U/l5ubq2LFjSkhI0OHDh11zWINobt26ddPChQtVUFCggoICXXnllbruuutc/5PKGkRLys/P14oVK9S/f3+3cdYhGsXyYUOHDrWSk5Pdxnr37m3NmTPHQx3Bl0iy1q1b53p+/PhxKywszFq4cKFr7MiRI1ZISIi1fPlyD3SIc11paaklycrLy7MsizUIz2nfvr21cuVK1iBaVGVlpdWrVy8rNzfXGjlypDVz5kzLsvhdiMbz2TNS1dXVKiwsVEJCgtt4QkKCtm3b5qGu4Mv27NmjkpIStzVpt9s1cuRI1iSaRUVFhSSpQ4cOkliDaHk1NTV67bXXdPjwYcXGxrIG0aKmT5+ucePGadSoUW7jrEM0lr+nG/CUsrIy1dTUKDQ01G08NDRUJSUlHuoKvqx23dW3Jvfu3euJlnAOsyxLqamp+s1vfqOoqChJrEG0nB07dig2NlZHjhxR27ZttW7dOvXt29f1P6msQTS31157TZ988ony8/PrbON3IRrLZ4NULZvN5vbcsqw6Y0BLYk2iJdx111367LPP9MEHH9TZxhpEc7vkkkvkcDh04MABrV27VpMnT1ZeXp5rO2sQzam4uFgzZ87Uxo0bFRQU1OA81iFOxWcv7evUqZP8/PzqnH0qLS2t8xcIoCWEhYVJEmsSze7uu+/W22+/rffff1/dunVzjbMG0VICAwN10UUXKSYmRunp6RowYICWLFnCGkSLKCwsVGlpqaKjo+Xv7y9/f3/l5eXp2Weflb+/v2utsQ5xKj4bpAIDAxUdHa3c3Fy38dzcXMXFxXmoK/iyyMhIhYWFua3J6upq5eXlsSZxRliWpbvuuktvvPGG3nvvPUVGRrptZw3CUyzLUlVVFWsQLeKqq67Sjh075HA4XI+YmBjdcsstcjgc6tmzJ+sQjeLTl/alpqbqtttuU0xMjGJjY7VixQoVFRUpOTnZ063hHHXo0CHt3r3b9XzPnj1yOBzq0KGDunfvrlmzZmnBggXq1auXevXqpQULFqhNmzaaOHGiB7vGuWL69Ol69dVX9dZbb6ldu3auv7aGhISodevWru9RYQ2iOT344IMaO3asIiIiVFlZqddee02bNm3S+vXrWYNoEe3atXN9NrTWeeedp44dO7rGWYdoDJ8OUhMmTFB5ebnmz58vp9OpqKgo5eTkqEePHp5uDeeogoICXXHFFa7nqampkqTJkycrKytL999/v37++WelpKToxx9/1GWXXaaNGzeqXbt2nmoZ55DMzExJ0uWXX+42/tJLL2nKlCmSxBpEs9u/f79uu+02OZ1OhYSEqH///lq/fr1Gjx4tiTUI78A6RGPYLMuyPN0EAAAAAJxNfPYzUgAAAADQVAQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAAAAADBEkAIAAAAAQwQpAIDPu+eee5SYmOjpNgAAZxGCFADA5zkcDg0cONDTbQAAziIEKQCAz/v00081aNAgT7cBADiLEKQAAD6tuLhY5eXlrjNSBw4cUGJiouLi4uR0Oj3bHADAaxGkAAA+zeFwKCQkRJGRkdqxY4eGDBmi8PBwbdq0SeHh4Z5uDwDgpQhSAACf5nA4NGDAAK1Zs0YjRozQvffeqxUrVigwMNDTrQEAvJjNsizL000AAOAp48eP1/vvvy9JeueddxQXF+fhjgAAZwPOSAEAfJrD4dD48eN15MgRHThwwNPtAADOEpyRAgD4rMrKSoWEhKiwsFCffvqpZs6cqW3btqlfv36ebg0A4OX8Pd0AAACe4nA45Ofnp759+2rQoEHauXOnEhMT9fHHH6tTp06ebg8A4MW4tA8A4LM+/fRT9e7dW3a7XZL05JNPqm/fvrrxxhtVXV3t4e4AAN6MS/sAAAAAwBBnpAAAAADAEEEKAAAAAAwRpAAAAADAEEEKAAAAAAwRpAAAAADAEEEKAAAAAAwRpAAAAADAEEEKAAAAAAwRpAAAAADAEEEKAAAAAAwRpAAAAADA0P8DUnmaY7HDOCoAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAAE7CAYAAAASMCotAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAwOUlEQVR4nO3df1iUdb7/8deIyWDhFCoyrmSYdojA33JEM/thHs04/b5aN1ylzlasdTTaXbM9hrQnqa62Y10l5e61uB1W83S1lmzFSllWm4VKaMhethUl1RAFCmQNJnN///DLrBOQMDPMPTP383Fdc13O5/58Zt7j3Nyfz3vu+/58bIZhGAIAAAAAixpgdgAAAAAAYCaSIgAAAACWRlIEAAAAwNJIigAAAABYGkkRAAAAAEsjKQIAAABgaSRFAAAAACyNpAgAAACApZEUAQAAALA0kiIAiBAbNmyQzWbT7t27e6zz8ccfy2azacOGDaELDF2sXr1aNpvNr7a1tbVavXq1Pv744y7blixZorPOOiuw4AAAXZAUAUAUcTqd2rlzpxYsWGB2KPBTbW2tCgsLu02KVq1apS1btoQ+KACIcgPNDgAAEDyxsbGaPn262WH8oG+++UaDBw82O4yIdPbZZ5sdAgBEJc4UAUAU6e7yuc5Lufbv36+FCxfK4XBoxIgRuvHGG9XS0uLT3jAMrVu3ThMnTlRcXJzOOOMMXXvttfroo4986lVUVOiKK67QqFGjZLfbNXbsWN1yyy366quvfOp1vndVVZWuvfZanXHGGScd2H/22We6+eablZycrEGDBmnkyJG69tpr9cUXX3jrHDx4UDk5OUpMTFRsbKzOPfdc/fa3v5XH4+nyf/HQQw/p4YcfVkpKik477TRlZWXp7bff9tZbu3atbDabPvjggy6xrFixQoMGDfL5XH/4wx80YcIE2e12JSQk6KqrrtLf//73H/xMkmSz2bR69eou5WeddZaWLFki6fglktddd50k6aKLLpLNZvP5Pru7fM7tdmvlypVKSUnRoEGD9KMf/UhLly7V4cOHu7zP5ZdfrvLyck2ePFlxcXFKTU3VH/7wh5PGDgDRjqQIACzimmuu0TnnnKNnn31Wd911lzZu3Kg77rjDp84tt9yi5cuXa86cOXruuee0bt067d+/XzNmzPBJSj788ENlZWWpuLhY27Zt0z333KN33nlH559/vr777rsu73311Vdr7NixeuaZZ/TEE0/0GONnn32madOmacuWLcrPz9dLL72ktWvXyuFw6NChQ5KkL7/8UjNmzNC2bdv0m9/8Rlu3btWcOXP0i1/8QrfddluX13z88cdVUVGhtWvX6k9/+pOOHDmiyy67zJsQ5uTkaNCgQV3uw+ro6FBpaamys7M1bNgwSVJRUZFuuukmnXfeefrzn/+sRx55RPv27VNWVpb+8Y9/9O6L+AELFizQmjVrvHHv3LnzBy+HNAxDV155pR566CEtWrRIL7zwgvLz8/XHP/5RF198sdrb233q7927V3feeafuuOMOPf/88xo/frxuuukmvf766wHHDgARzQAARISSkhJDkrFr164e69TV1RmSjJKSEm9ZQUGBIcl48MEHfer+/Oc/N+x2u+HxeAzDMIydO3cakozf/va3PvXq6+uNuLg441e/+lW37+nxeIzvvvvO+OSTTwxJxvPPP9/lve+5555efcYbb7zROOWUU4za2toe69x1112GJOOdd97xKc/LyzNsNptx4MABwzD++X+RkZFhHDt2zFuvsrLSkGRs2rTJW3b11Vcbo0aNMjo6OrxlL774oiHJKCsrMwzDMA4dOmTExcUZl112mc/7Hjx40IiNjTV+8pOfdPncJ5JkFBQUdPk8o0ePNhYvXux9/swzzxiSjFdffbVL3cWLFxujR4/2Pi8vL+/2u928ebMhyVi/fr3P+9jtduOTTz7xln377bdGQkKCccstt3R5LwCwEs4UAYBF/Pu//7vP8/Hjx8vtdquxsVGS9Je//EU2m005OTk6duyY95GUlKQJEybotdde87ZtbGzUrbfequTkZA0cOFCnnHKKRo8eLUndXkp2zTXX9CrGl156SRdddJHOPffcHuts375daWlpyszM9ClfsmSJDMPQ9u3bfcoXLFigmJgYn88tSZ988om3LDc3V59++qlefvllb1lJSYmSkpI0f/58SdLOnTv17bffei9165ScnKyLL75Yr7zySq8+YzB1ftbvx3Tdddfp1FNP7RLTxIkTdeaZZ3qf2+12nXPOOT7/FwBgRUy0AAAWMXToUJ/nsbGxkqRvv/1WkvTFF1/IMAyNGDGi2/ZjxoyRJHk8Hs2dO1eff/65Vq1apYyMDJ166qnyeDyaPn269/VO5HQ6exXjl19+qVGjRv1gnaampm6npR45cqR3+4lO9rklaf78+XI6nSopKdHcuXN16NAhbd26VcuWLfMmVJ2v291nGTlypCoqKk7y6YKvqalJAwcO1PDhw33KbTabkpKSTvp/IR3//+juOwMAKyEpAgBIkoYNGyabzaY33njDmzicqLOspqZGe/fu1YYNG7R48WLv9u4mKujU2zV7hg8frk8//fQH6wwdOlQul6tL+eeff+79HH0VExOjRYsW6dFHH9Xhw4e1ceNGtbe3Kzc31+d9JfX43id739jY2C73+Ehdk7i+GDp0qI4dO6Yvv/zSJzEyDEMNDQ2aNm2a368NAFbC5XMAAEnS5ZdfLsMw9Nlnn2nq1KldHhkZGZL+meB8P3F68sknA45h/vz5evXVV3XgwIEe61xyySWqra1VVVWVT/lTTz0lm82miy66yK/3zs3Nldvt1qZNm7RhwwZlZWUpNTXVuz0rK0txcXEqLS31affpp59q+/btuuSSS37w9c866yzt27fPp2z79u36+uuvfcq6O5PVk873/H5Mzz77rI4cOXLSmAAAx3GmCAAizPbt27td2POyyy4L6HVnzpypm2++Wbm5udq9e7cuuOACnXrqqXK5XHrzzTeVkZGhvLw8paam6uyzz9Zdd90lwzCUkJCgsrKyoFw+du+99+qll17SBRdcoLvvvlsZGRk6fPiwysvLlZ+fr9TUVN1xxx166qmntGDBAt17770aPXq0XnjhBa1bt055eXk655xz/Hrv1NRUZWVlqaioSPX19Vq/fr3P9tNPP12rVq3S3XffrZ/+9KdauHChmpqaVFhYKLvdroKCgh98/UWLFmnVqlW65557NHv2bNXW1uqxxx6Tw+HwqZeeni5JWr9+veLj42W325WSktLtpW+XXnqp/u3f/k0rVqxQa2urZs6cqX379qmgoECTJk3SokWL/Pq/AACrISkCgAizYsWKbsvr6uoCfu0nn3xS06dP15NPPql169bJ4/Fo5MiRmjlzpndig1NOOUVlZWVatmyZbrnlFg0cOFBz5szRyy+/7HMTvz9+9KMfqbKyUgUFBbr//vvV1NSk4cOH6/zzz1dCQoKk45fYvfXWW1q5cqVWrlyp1tZWjRkzRg8++KDy8/MDev/c3FzdfPPNiouL0/XXX99l+8qVK5WYmKhHH31UmzdvVlxcnC688EKtWbNG48aN+8HX/uUvf6nW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",
      "text/plain": [
       "<Figure size 1000x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1sAAAE7CAYAAAArV5t2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA5A0lEQVR4nO3deXQUVd7/8U9DSCdgEghIFgghKPsuiyQoBFk0II8KuAwDBFBRQAaJHBQdFHTGiINORLaHUQgMsujDqiwSZIkKYhACjjAMzEQSMWGJQAAlLLm/P/ilhyZrkxRJk/frnD6HunVv1be6b7Q/XdXVNmOMEQAAAACgVFUq6wIAAAAA4FZE2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAlCuxcfHy2azOR4eHh6qW7euhg0bpqNHj5bqviIjIxUZGVmq27TZbJo8ebJjOfd4fvzxx1LdjzubPHmybDbbDY3dv3+/Jk+enO/zOXToUNWvX79kxd1E+c2NxYsXKy4uLk/fH3/8UTabTdOmTbt5BZZASV7jghT377V+/fqy2WwF9l24cKHjvy9bt24t1RqLEhcXp379+iksLKzQGnOtXr1aXbt2la+vr6pVq6bmzZtr7ty5N6dYADeEsAXALcyfP187duxQQkKCnn76aS1ZskT33nuvzp8/X2r7mDVrlmbNmlVq28tPnz59tGPHDgUFBVm6n4pi//79mjJlSr5ha9KkSVq5cuXNL+oG5Tc3Cgpb7uapp57Sjh07ymz/Pj4+SkxM1L///e886+bNmydfX98yqEqaM2eOjhw5ovvuu0+33357oX3feust9evXTy1atNDHH3+sNWvWaNSoUbp48eJNqhbAjfAo6wIAoDhatGih9u3bS5K6deumK1eu6I033tCqVav0+9//vkTb/vXXX1W1alU1a9asNEot1O23317kmyqUjjvuuKOsS3DJrTg3cv+26tatq7p165ZZHffcc4++//57zZs3T3/+858d7f/+97+VmJiop556Sn/7299uel379+9XpUpXP/du0aJFgf2+++47vfLKK4qNjdWECRMc7d27d7e8RgAlw5ktAG6pU6dOkqQjR45IkowxmjVrltq0aSNvb2/VqFFDAwYM0H/+8x+ncZGRkWrRooUSExMVERGhqlWravjw4Y5111/G88svv2jUqFGqU6eOPD091aBBA73yyivKzs526peVlaWnn35aNWvW1G233aYHHnhA//rXv/LUXdBlhBs2bFD37t3l5+enqlWrqmnTpoqNjS3yeTh69KhGjBihkJAQeXp6Kjg4WAMGDNCxY8ccfVJTUzVo0CDVrl1bdrtdTZs21TvvvKOcnBxHn2svS3v33XcVFham2267TeHh4frmm28c/eLi4mSz2XT48OE8tbz44ovy9PTUyZMnHW3z5s1T69at5eXlJX9/fz3yyCM6cOBAkcd1/eWXuerXr6+hQ4dKuvpcPvroo5KuBvDcS8Hi4+Ml5X8Z4YULFzRx4kSFhYXJ09NTderU0ejRo3X69Ok8+3nwwQe1YcMG3XXXXfL29laTJk00b968Imvv0KGD+vTp49TWsmVL2Ww2JSUlOdpWrFghm82m77//3nE8186NyMhIrV27VkeOHHG6lPZ6hb1eBcndV0JCgoYNGyZ/f39Vq1ZNffv2zfM3I0mbNm1S9+7d5evrq6pVq6pz58764osvnPrkXiq4e/duDRgwQDVq1HAE3vwuI8zJydHbb7+tJk2ayG63q3bt2hoyZIh++uknp37GGL399tsKDQ2Vl5eX7rrrLq1fv77IY7xWpUqVNGTIEC1YsMBp3s+bN08hISHq0aOHS9srLblBqygzZsyQ3W7XmDFjLK4IQGkjbAFwS7lv9nPPBDzzzDN6/vnn1aNHD61atUqzZs3SDz/8oIiICKfgIUnp6ekaNGiQBg4cqHXr1mnUqFH57uPChQvq1q2bFi5cqJiYGK1du1aDBg3S22+/rX79+jn6GWP08MMP6+9//7teeOEFrVy5Up06dVJUVFSxjuXDDz9U7969lZOTozlz5ujTTz/VH/7whzxvOq939OhRdejQQStXrlRMTIzWr1+vuLg4+fn56dSpU5KkEydOKCIiQhs3btQbb7yhNWvWqEePHho/fryee+65PNucOXOmEhISFBcXp48++kjnz59X7969debMGUnSoEGD5Onp6Qg0ua5cuaJFixapb9++qlWrliQpNjZWTz75pJo3b64VK1bovffe0759+xQeHq5Dhw4V67kpTJ8+ffTmm2866t6xY4d27NiRJ+jkyn2dpk2bpsGDB2vt2rWKiYnRggULdN999+UJ0Hv37tULL7ygcePGafXq1WrVqpWefPJJJSYmFlpXjx49lJiYqEuXLkmSjh07pn/84x/y9vZWQkKCo9+mTZsUEBCgli1b5rudWbNmqXPnzgoMDHQc2/WX4hX1ehXlySefVKVKlRyXK3777beKjIx0Cp+LFi1Sr1695OvrqwULFujjjz+Wv7+/7r///jyBS5L69eunO++8U5988onmzJlT4L5HjhypF198UT179tSaNWv0xhtvaMOGDYqIiHAK7FOmTHH0W7VqlUaOHKmnn35aBw8eLNYx5ho+fLh+/vlnff7555KuztkFCxZo6NChxQ49knT58uViPYwxLtVXmMTERDVt2lTLly9X48aNVblyZdWtW1cvvfQSlxEC5Z0BgHJs/vz5RpL55ptvzKVLl8zZs2fNZ599Zm6//Xbj4+NjMjIyzI4dO4wk88477ziNTUtLM97e3mbChAmOtq5duxpJ5osvvsizr65du5quXbs6lufMmWMkmY8//tip39SpU40ks3HjRmOMMevXrzeSzHvvvefU789//rORZF577bU8x5OSkmKMMebs2bPG19fX3HPPPSYnJ8el52b48OGmSpUqZv/+/QX2eemll4wks3PnTqf2kSNHGpvNZg4ePGiMMSYlJcVIMi1btjSXL1929Pv222+NJLNkyRJHW79+/UzdunXNlStXHG3r1q0zksynn35qjDHm1KlTxtvb2/Tu3dtpv6mpqcZut5uBAwc62l577TVz/f+Orn/ecoWGhpro6GjH8ieffGIkmS1btuTpGx0dbUJDQx3LGzZsMJLM22+/7dRv2bJlRpKZO3eu0368vLzMkSNHHG2//fab8ff3N88880yefV1r06ZNRpJJTEw0xhizaNEi4+PjY0aNGmW6devm6NewYUOn5+H6uWGMMX369HE6hlyuvF75yd3XI4884tT+9ddfG0nmT3/6kzHGmPPnzxt/f3/Tt29fp35XrlwxrVu3Nh07dnS05b6Or776ap79Xf8aHzhwwEgyo0aNcuq3c+dOI8m8/PLLxpir88jLy6vAOq/9ey1IaGio6dOnjzHm6t/4gAEDjDHGrF271thsNpOSklLoPLpW7vNenEdR27pe8+bNCzweu91ufHx8TI0aNcyMGTPM5s2bzSuvvGIqV67sNIcAlD+c2QLgFjp16qQqVarIx8dHDz74oAIDA7V+/XoFBATos88+k81m06BBg5w+WQ4MDFTr1q3z3GGsRo0auu+++4rc5+bNm1WtWjUNGDDAqT33MrbcT/W3bNkiSXm+OzZw4MAi97F9+3ZlZWVp1KhRLt+tbf369erWrZuaNm1aYJ/NmzerWbNm6tixo1P70KFDZYzR5s2bndr79OmjypUrO5ZbtWol6b+Xa0rSsGHD9NNPP2nTpk2Otvnz5yswMNBxNm/Hjh367bffHM9VrpCQEN133335nhGxWu6xXl/To48+qmrVquWpqU2bNqpXr55j2cvLS40aNXJ6LvLTuXNneXl5OZ6fhIQERUZG6oEHHtD27dv166+/Ki0tTYcOHSrx5WvFeb0Kc/2cjYiIUGhoqGNOb9++Xb/88ouio6Od/rZycnL0wAMPKCkpKc9Navr371/kfnO3f/1r0bFjRzVt2tTxWuzYsUMXLlwosE5XDR8+XGvWrFFmZqY+/PBDdevWzaU7VgYHByspKalYj3bt2rlcX0FycnJ09uxZzZo1S6NHj1a3bt30pz/9SWPGjNHixYvzvawXQPnADTIAuIWFCxeqadOm8vDwUEBAgNMd244dOyZjjAICAvId26BBA6fl4t4JMDMzU4GBgXlCUO3ateXh4aHMzExHPw8PD9WsWdOpX2BgYJH7OHHihCTd0M0DTpw4UeS4zMzMfN9MBgcHO9Zf6/pjsNvtkqTffvvN0RYVFaWgoCDNnz9fvXr10qlTp7RmzRqNHTvW8cY/d7v5PdfBwcFOl9PdLLmv0/U3obDZbAoMDCzyuZCuPh/XPhf58fLyUufOnbVp0yZNmTJFX3zxhSZMmKDIyEhduXJFX375peNnC0oatorzehUmvzl67XORewnu9R84XOuXX35RtWrVHMvF+fsqan7khsXcfgXV6aoBAwZozJgx+utf/6pPP/00z+WwRfH09FSbNm2K1ffaEFxSNWvWVEZGhu6//36n9qioKMXFxWn37t268847S21/AEoPYQuAW2jatKnjboTXq1Wrlmw2m7788kvHm81rXd9W3DNINWvW1M6dO2WMcRpz/PhxXb582fHdpJo1a+ry5cvKzMx0evObkZFR5D5y3/gX9f2sgsYWNa5mzZpKT0/P0/7zzz9LkuMYXFG5cmUNHjxY06dP1+nTp7V48WJlZ2dr2LBhTvuVVOC+i9qv3W7P8x0qKW84dEXu63TixAmnwGWMUUZGhjp06HDD275e9+7d9eqrr+rbb7/VTz/9pJ49e8rHx0cdOnRQQkKCfv75ZzVq1EghISGlts8bkd8czcjIcLxxz32d3n//fcdNaa53/Yccxfn7unZ+XP+BwbXzI7dfQXW6+jtqVatW1RNPPKHY2Fj5+vo6ffeyOH788UeFhYUVq++WLVtK7Xf7WrVqle9zYP7/98Jc+c4ZgJuLv04Abu/BBx+UMUZHjx5V+/bt8zwKugFBUbp3765z585p1apVTu0LFy50rJeu3glPkj766COnfosXLy5yHxEREfLz89OcOXNc/kJ9VFSUtmzZUuiNArp37679+/dr9+7deY7BZrM5anfVsGHDdOHCBS1ZskTx8fEKDw9XkyZNHOvDw8Pl7e2tRYsWOY376aeftHnz5iJvWV2/fn3t27fPqW3z5s06d+6cU5srZ3Jy93l9TcuXL9f58+dL9TbaPXr00OXLlzVp0iTVrVvX8dz06NFDmzZt0ubNm4t1Vqs4Z9JK4vo5u337dh05csQREjp37qzq1atr//79+f5ttW/fXp6eni7vN/cy3utfi6SkJB04cMDxWnTq1EleXl4F1nkjRo4cqb59++rVV1+Vl5eXS2PL6jLC3Eszr78L47p161SpUqVS/aAAQOnizBYAt9e5c2eNGDFCw4YN065du9SlSxdVq1ZN6enp+uqrr9SyZUuNHDnS5e0OGTJEM2fOVHR0tH788Ue1bNlSX331ld5880317t3b8Wa5V69e6tKliyZMmKDz58+rffv2+vrrr/X3v/+9yH3cdttteuedd/TUU0+pR48eevrppxUQEKDDhw9r7969mjFjRoFjX3/9da1fv15dunTRyy+/rJYtW+r06dPasGGDYmJi1KRJE40bN04LFy5Unz599Prrrys0NFRr167VrFmzNHLkSDVq1Mjl50WSmjRpovDwcMXGxiotLU1z5851Wl+9enVNmjRJL7/8soYMGaLf/e53yszM1JQpU+Tl5aXXXnut0O0PHjxYkyZN0quvvqquXbtq//79mjFjhvz8/Jz65f420dy5c+Xj4yMvLy+FhYXlewlgz549df/99+vFF19UVlaWOnfurH379um1115T27ZtNXjw4Bt6LvLTrl071ahRQxs3bnQ649ejRw+98cYbjn8XpWXLllqxYoVmz56tdu3aqVKlSgWe4b0Ru3bt0lNPPaVHH31UaWlp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sh1fHmpgfMlfQwAAgJIgbJXA8bP5v5ErqN2VfiXdBuPLdnx5qIHxJX8NAQAASoKwVQK1fbxcanelX0m3wfiyHV8eamB8yV9DAACAkiBs3QCbrt7NrGOYf77rO4b5K8jPSwXdWLqo8aWxDcaX7fjyUAPjS/4aAgAAlARhy0W5b9xe69uswN/pqVzJptf6NnPq78r40tgG48t2fHmogfElfw0BAABKgrDlokA/r2LdLvqBFkGaPegu1fa139D40tgG48t2fHmogfElfw0BAABuFL+zVQy599L/bNdhPdC2gUufhJ+9cEktJ2+UJMUP66B7G97u8ifpJd0G48t2fHmogfElfw0BAAAkfmfLMu1Ca7j8Bu3a/h3D/G/oDV5Jt8H4sh1fHmpgfMlfQwAAAFcRtgAAAADAAoQtAAAAALBAuQpbiYmJ6tu3r4KDg2Wz2bRq1Sqn9UOHDpXNZnN6dOrUqcjtLl++XM2aNZPdblezZs20cuVKi44AAAAAAK4qV2Hr/Pnzat26tWbMmFFgnwceeEDp6emOx7p16wrd5o4dO/T4449r8ODB2rt3rwYPHqzHHntMO3fuLO3yAQAAAMDBo6wLuFZUVJSioqIK7WO32xUYGFjsbcbFxalnz56aOHGiJGnixInatm2b4uLitGTJkhLVCwAAAAAFKVdntopj69atql27tho1aqSnn35ax48fL7T/jh071KtXL6e2+++/X9u3by9wTHZ2trKyspweAAAAAOAKtwpbUVFR+uijj7R582a98847SkpK0n333afs7OwCx2RkZCggIMCpLSAgQBkZGQWOiY2NlZ+fn+MREhJSascAAAAAoGIoV5cRFuXxxx93/LtFixZq3769QkNDtXbtWvXr16/AcTab82/qGGPytF1r4sSJiomJcSxnZWURuAAAAAC4xK3C1vWCgoIUGhqqQ4cOFdgnMDAwz1ms48eP5znbdS273S673V5qdQIAAACoeNzqMsLrZWZmKi0tTUFBQQX2CQ8PV0JCglPbxo0bFRERYXV5AAAAACqwcnVm69y5czp8+LBjOSUlRcnJyfL395e/v78mT56s/v37KygoSD/++KNefvll1apVS4888ohjzJAhQ1SnTh3FxsZKksaOHasuXbpo6tSpeuihh7R69Wpt2rRJX3311U0/PgAAAAAVR7kKW7t27VK3bt0cy7nfm4qO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",
      "text/plain": [
       "<Figure size 1000x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAAE7CAYAAAASMCotAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6L0lEQVR4nO3de3hU1b3/8c8QSCZAMhAgZJAAqaAQw1WIBkTkWhBTb9CWGm5eiegB0aNiD4ZoNWKtpVWJxVbQk4KUR6mklpQoilrRgBgwxoPVRog2GEogRHSCZNbvD36ZMk4Cuc4l+/16njwwa9aa/Z2Ztfde39l7r20zxhgBAAAAgEW1C3QAAAAAABBIJEUAAAAALI2kCAAAAIClkRQBAAAAsDSSIgAAAACWRlIEAAAAwNJIigAAAABYGkkRAAAAAEsjKQIAAABgaSRFAOq0du1a2Ww27dq1q946n3/+uWw2m9auXeu/wOBj+fLlstlsTWpbXFys5cuX6/PPP/d5bt68eerXr1/zgmuC2n712GOP+X3Zrak531N9LrvsMl122WWex6yTvt544w3ZbDa98cYbjW77zTffaPny5XW2rd1G1rXuAAg9JEUAmszpdGrHjh2aPn16oENBExUXFyszM7POgd2yZcu0adMm/wfVRt14443asWNHqy6DdbJlffPNN8rMzKwzKZo+fbp27Nghp9Pp/8AAtLj2gQ4AQOiKiIjQxRdfHOgwzuibb75Rx44dAx1GSDr33HMDHUKbUNsHe/furd69e7fqskJhnWwrevTooR49egQ6DAAthCNFAJqsrlN1ak8R+uijjzRr1iw5HA717NlT119/vSorK73aG2O0atUqDRs2TJGRkeratatmzJihf/7zn1718vPzdeWVV6p3796y2+3q37+/brnlFv373//2qle77N27d2vGjBnq2rXrWQf2X375pW6++WbFx8crPDxcvXr10owZM/TVV1956hw4cEBpaWmKjY1VRESEBg0apF/96ldyu90+n8Vjjz2mxx9/XAkJCercubNSUlL07rvveuqtXLlSNptNn376qU8s99xzj8LDw73e17PPPquhQ4fKbrcrJiZGV199tT7++OMzvidJstlsWr58uU95v379NG/ePEmnTv+ZOXOmJGn8+PGy2Wxe32ddp8+5XC4tXbpUCQkJCg8P1znnnKOFCxfq6NGjPsu54oorlJeXpxEjRigyMlIDBw7Us88+e9bYa7ndbj300EPq06eP7Ha7Ro4cqddee83z/FtvvSWbzab169f7tH3++edls9m0c+fOel+/9vSn/Px8zZ8/XzExMerUqZNSU1N9+qAkvfrqq5o4caKio6PVsWNHjRkzxise6cx9sK7T59xutx599FENHDhQERERio2N1Zw5c/TFF1941TPG6NFHH1Xfvn1lt9s1YsQIbdmyxSfG+k6f+7//+z/NmjVLPXv2VEREhPr06aM5c+aourq63s9Hkqqrq/XAAw9o0KBBstvt6tatm8aPH6933nnHU6cl+8SePXtks9n0hz/8wSeWLVu2yGazafPmzZ6yt99+WxMnTlRUVJQ6duyo0aNH65VXXjnje5J8TzusdXqf//zzzz1JT2Zmpmf9OH39qev0uYass/PmzVPnzp316aef6vLLL1fnzp0VHx+vO++886zfCYDWQVIEoFVce+21Ou+88/Tiiy/q3nvv1bp163THHXd41bnlllu0ePFiTZo0SX/+85+1atUqffTRRxo9erRXUvLZZ58pJSVF2dnZ2rp1q+6//3699957uuSSS/Tdd9/5LPuaa65R//79tXHjRj399NP1xvjll19q1KhR2rRpk5YsWaItW7Zo5cqVcjgcOnLkiCTp0KFDGj16tLZu3aoHH3xQmzdv1qRJk3TXXXfptttu83nNp556Svn5+Vq5cqX++Mc/6vjx47r88ss9CWFaWprCw8N9Bq01NTXKyclRamqqunfvLknKysrSDTfcoAsuuEAvvfSSfvOb32jv3r1KSUnRP/7xj4Z9EWcwffp0Pfzww564d+zYccZTr4wxuuqqq/TYY49p9uzZeuWVV7RkyRI999xzmjBhgs9gbs+ePbrzzjt1xx136OWXX9aQIUN0ww036M0332xQfE8++aTy8vK0cuVK5eTkqF27dpo2bZrnFLSxY8dq+PDheuqpp+psO2rUKI0aNeqsy7nhhhvUrl07rVu3TitXrlRBQYEuu+wyr0F9Tk6OpkyZoujoaD333HP605/+pJiYGP3whz/0SYykhvfB9PR03XPPPZo8ebI2b96sBx98UHl5eRo9erRXcpyZmemp9+c//1np6em66aabtG/fvrO+vz179mjUqFF699139cADD2jLli3KyspSdXW1Tpw4UW+7kydPatq0aXrwwQd1xRVXaNOmTVq7dq1Gjx6tAwcOSGr5PjF06FANHz5ca9as8Yln7dq1io2N1eWXXy5J2r59uyZMmKDKykr94Q9/0Pr16xUVFaXU1FRt2LDhrJ/L2TidTuXl5Uk61Udq149ly5bV26Yx6+x3332nH/3oR5o4caJefvllXX/99fr1r3+tFStWNDt2AE1gAKAOa9asMZLMzp07661TUlJiJJk1a9Z4yjIyMowk8+ijj3rVvfXWW43dbjdut9sYY8yOHTuMJPOrX/3Kq15paamJjIw0d999d53LdLvd5rvvvjP79+83kszLL7/ss+z777+/Qe/x+uuvNx06dDDFxcX11rn33nuNJPPee+95laenpxubzWb27dtnjPnPZzF48GBz8uRJT72CggIjyaxfv95Tds0115jevXubmpoaT9lf//pXI8nk5uYaY4w5cuSIiYyMNJdffrnXcg8cOGAiIiLMz372M5/3fTpJJiMjw+f99O3b18ydO9fzeOPGjUaSef31133qzp071/Tt29fzOC8vr87vdsOGDUaSWb16tddy7Ha72b9/v6fs22+/NTExMeaWW27xWdbpaj/LXr16mW+//dZTfuzYMRMTE2MmTZrkKavtpx988IGnrPYzf+655864nNq2V199tVf53//+dyPJ/OIXvzDGGHP8+HETExNjUlNTverV1NSYoUOHmuTkZE/Zmfrg97+njz/+2Egyt956q1e99957z0gy9913nzHmVF+w2+31xjlu3DhPWV3r5IQJE0yXLl1MeXn5GT+P73v++eeNJPPMM8/UW6c1+sRvf/tbI8mzbhljTEVFhYmIiDB33nmnp+ziiy82sbGxpqqqylN28uRJk5SUZHr37u3Z1rz++us+fXzcuHFen1ut7/f5Q4cO1bsu1fafkpISY0zj1tm5c+caSeZPf/qTV93LL7/cnH/++T7LAtD6OFIEoFX86Ec/8no8ZMgQuVwulZeXS5L+8pe/yGazKS0tTSdPnvT8xcXFaejQoV4XNpeXl2vBggWKj49X+/bt1aFDB/Xt21eS6jyV7Nprr21QjFu2bNH48eM1aNCgeuts27ZNiYmJSk5O9iqfN2+ejDHatm2bV/n06dMVFhbm9b4laf/+/Z6y+fPn64svvtCrr77qKVuzZo3i4uI0bdo0SdKOHTv07bffek7VqRUfH68JEybUeXSitdW+1+/HNHPmTHXq1MknpmHDhqlPnz6ex3a7Xeedd57XZ3Em11xzjex2u+dx7VGAN998UzU1NZKkWbNmKTY21uto0RNPPKEePXroJz/5SYOWc91113k9Hj16tPr27avXX39dkvTOO++ooqJCc+fO9eqrbrdbU6dO1c6dO3X8+HGv12hIH6x9/e9/nsnJyRo0aJDn89yxY4dcLle9cZ7JN998o+3bt+vHP/5xo69/2bJli+x2u66//vp667RGn7juuusUERHhdTR1/fr1qq6u1vz58yVJx48f13vvvacZM2aoc+fOnnphYWGaPXu2vvjiiwYdRWtJjV1nbTabUlNTvcqGDBnS4PUDQMsiKQLQKrp16+b1OCIiQpL07bffSpK++uorGWPUs2dPdejQwevv3Xff9Zw65Ha7NWXKFL300ku6++679dprr6mgoMBznU7t652uobNBHTp06KwXvh8+fLjO1+vVq5fn+dOd7X1L0rRp0+R0Oj2nCB05ckSbN2/WnDlzPAlV7evWt+zvL9cfDh8+rPbt2/sMrm02m+Li4s76WUinPo+6vrO6xMXF1Vl24sQJff31157Xu+WWW7Ru3TodPXpUhw4d0p/+9CfdeOONns++qcupfT+1p3LOmDHDp6+uWLFCxhhVVFR4tW9IH2zod1z7b31xnsmRI0dUU1PTpAkeDh06pF69eqldu/qHCq3RJ2JiYvSjH/1Izz//vCf5Xbt2rZKTk3XBBRd43pcxplHrZmtr7DrbsWNHr6RfOvVZuFyu1gsSQL2YfQ5AQHTv3l02m01vvfVWnYPX2rKioiLt2bNHa9eu1dy5cz3P1zVRQa2G3gumR48ePhe0f1+3bt1UVlbmU/6vf/3L8z4aq/bX7N/+9rc6evSo1q1b5/UreO1yJdW77LMtNyIios4LtpszUOzWrZtOnjypQ4cOeQ2CjTE6ePBgg67faYyDBw/WWRYeHu51dCA9PV2PPPKInn32WblcLp08eVILFixo9nL69+8v6T/f8RNPPFHvzG49e/b0etyQPnj6d/z9pOX077i2Xn1xnuleUjExMQoLCztrP69Ljx499Pbbb8vtdtebGLVWn5g/f742btyo/Px89enTRzt37lR2drbn+a5du6pdu3ZNXjftdrvPxC+SfCZvaYzmrrMAAosjRQAC4oorrpAxRl9++aVGjhzp8zd48GBJ/xlcfj9x+t3vftfsGKZNm6bXX3/9jKfZTJw4UcXFxdq9e7dXee3sZuPHj2/SsufPny+Xy6X169dr7dq1SklJ0cCBAz3Pp6SkKDIyUjk5OV7tvvjiC23btk0TJ0484+v369dPe/fu9Srbtm2b5whLrbqOZNWndpnfj+nFF1/U8ePHzxpTY7300ktev5pXVVUpNzdXY8eO9TpF0el0aubMmVq1apWefvpppaamep2idTZ//OMfvR6/88472r9/v2d2sjFjxqhLly4qLi6us6+OHDlS4eHhjX5/EyZMkOT7ee7cuVMff/yx5/O8+OKLZbfb643zTCIjIzVu3Dht3Lix0QP+adOmyeVynfFGsK3VJ6ZMmaJzzjlHa9as0Zo1a2S32zVr1izP8506ddJFF12kl156yavvut1u5eTkqHfv3jrvvPPqff1+/frpk08+8frh4PDhw16z6kmNWz+au84CCCyOFAE4o23bttV5Y8/aGaCaasyYMbr55ps1f/587dq1S5deeqk6deqksrIyvf322xo8eLDS09M1cOBAnXvuubr33ntljFFMTIxyc3OVn5/frOVL8szEdemll+q+++7T4MGDdfToUeXl5WnJkiUaOHCg7rjjDj3//POaPn26HnjgAfXt21evvPKKVq1apfT09DMOvM5k4MCBSklJUVZWlkpLS7V69Wqv57t06aJly5bpvvvu05w5czRr1iwdPnxYmZmZstvtysjIOOPrz549W8uWLdP999+vcePGqbi4WE8++aQcDodXvaSkJEnS6tWrFRUVJbvdroSEhDpPc5o8ebJ++MMf6p577tGxY8c0ZswY7d27VxkZGRo+fLhmz57dpM+iPmFhYZo8ebKWLFkit9utFStW6NixY8rMzPSpu2jRIl100UWSVOfMZWeya9cu3XjjjZo5c6ZKS0v185//XOecc45uvfVWSVLnzp31xBNPaO7cuaqoqNCMGTMUGxurQ4cOac+ePTp06JDXUYyGOv/883XzzTfriSee8Mys9/nnn2vZsmWKj4/3zNbYtWtX3XXXXfrFL37hFefy5cvPevqcJD3++OO65JJLdNFFF+nee+9V//799dVXX2nz5s363e9+p6ioqDrbzZo1S2vWrNGCBQu0b98+jR8/Xm63W++9954GDRqkn/70p63WJ8LCwjRnzhw9/vjjio6O1jXXXOPTd7OysjR5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asqUKTp+/LinDv0Qra1379565JFHtGvXLu3atUsTJkzQlVde6Rlw0gfhTzt37tTq1as1ZMgQr3L6IRrEtBHJyclmwYIFXmUDBw409957b4AiglVIMps2bfI8drvdJi4uzjzyyCOeMpfLZRwOh3n66acDECGsoLy83Egy27dvN8bQDxE4Xbt2Nb///e/pg/CrqqoqM2DAAJOfn2/GjRtnFi1aZIxhW4iGaxNHik6cOKH3339fU6ZM8SqfMmWK3nnnnQBFBasqKSnRwYMHvfpjRESExo0bR39Eq6msrJQkxcTESKIfwv9qamr0wgsv6Pjx40pJSaEPwq8WLlyo6dOna9KkSV7l9EM0VPtAB9AS/v3vf6umpkY9e/b0Ku/Zs6cOHjwYoKhgVbV9rq7+uH///kCEhDbOGKMlS5bokksuUVJSkiT6Ifznww8/VEpKilwulzp37qxNmzYpMTHRM+CkD6K1vfDCC9q9e7d27tzp8xzbQjRUm0iKatlsNq/HxhifMsBf6I/wl9tuu0179+7V22+/7fMc/RCt7fzzz1dhYaGOHj2qF198UXPnztX27ds9z9MH0ZpKS0u1aNEibd26VXa7vd569EOcTZs4fa579+4KCwvzOSpUXl7u88sA0Nri4uIkif4Iv7j99tu1efNmvf766+rdu7ennH4IfwkPD1f//v01cuRIZWVlaejQofrNb35DH4RfvP/++yovL9eFF16o9u3bq3379tq+fbt++9vfqn379p6+Rj/E2bSJpCg8PFwXXnih8vPzvcrz8/M1evToAEUFq0pISFBcXJxXfzxx4oS2b99Of0SLMcbotttu00svvaRt27YpISHB63n6IQLFGKPq6mr6IPxi4sSJ+vDDD1VYWOj5GzlypK677joVFhbqBz/4Af0QDdJmTp9bsmSJZs+erZEjRyolJUWrV6/WgQMHtGDBgkCHhjbo66+/1qeffup5XFJSosLCQsXExKhPnz5avHixHn74YQ0YMEADBgzQww8/rI4dO+pnP/tZAKNGW7Jw4UKtW7dOL7/8sqKiojy/gjocDkVGRnru00E/RGu67777NG3aNMXHx6uqqkovvPCC3njjDeXl5dEH4RdRUVGeaylrderUSd26dfOU0w/REG0mKfrJT36iw4cP64EHHlBZWZmSkpL017/+VX379g10aGiDdu3apfHjx3seL1myRJI0d+5crV27Vnfffbe+/fZb3XrrrTpy5Iguuugibd26VVFRUYEKGW1Mdna2JOmyyy7zKl+zZo3mzZsnSfRDtLqvvvpKs2fPVllZmRwOh4YMGaK8vDxNnjxZEn0QwYF+iIawGWNMoIMAAAAAgEBpE9cUAQAAAEBTkRQBAAAAsDSSIgAAAACWRlIEAAAAwNJIigAAAABYGkkRAAAAAEsjKQIAAABgaSRFAAAAACyNpAgAAACApZEUAQDajDvvvFOpqamBDgMAEGJIigAAbUZhYaGGDRsW6DAAACGGpAgA0Gbs2bNHw4cPD3QYAIAQQ1IEAGgTSktLdfjwYc+RoqNHjyo1NVWjR49WWVlZYIMDAAQ1kiIAQJtQWFgoh8OhhIQEffjhhxo1apScTqfeeOMNOZ3OQIcHAAhiJEUAgDahsLBQQ4cO1fr163XppZfqrrvu0urVqxUeHh7o0AAAQc5mjDGBDgIAgOa69tpr9frrr0uS/vKXv2j06NEBjggAECo4UgQAaBMKCwt17bXXyuVy6ejRo4EOBwAQQjhSBAAIeVVVVXI4HHr//fe1Z88eLVq0SO+8844uuOCCQIcGAAgB7QMdAAAAzVVYWKiwsDAlJiZq+PDh+uijj5SamqqCggJ179490OEBAIIcp88BAELenj17NHDgQEVEREiSVqxYocTERF1zzTU6ceJEgKMDAAQ7Tp8DAAAAYGkcKQIAAABgaSRFAAAAACyNpAgAAACApZEUAQAAALA0kiIAAAAAlkZSBAAAAMDSSIoAAAAAWBpJEQAAAABLIykCAAAAYGkkRQAAAAAsjaQIAAAAgKX9PyBrpM0BCdEoAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1000x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.signal as sig\n",
    "\n",
    "L = 32  # length of signal x[k]\n",
    "N = 16  # length of signal h[k]\n",
    "M = 16  # periodicity of periodic convolution\n",
    "\n",
    "\n",
    "def periodic_summation(x, N):\n",
    "    \"Zero-padding to length N or periodic summation with period N.\"\n",
    "    M = len(x)\n",
    "    rows = int(np.ceil(M / N))\n",
    "\n",
    "    if M < int(N * rows):\n",
    "        x = np.pad(x, (0, int(N * rows - M)), \"constant\")\n",
    "\n",
    "    x = np.reshape(x, (rows, N))\n",
    "\n",
    "    return np.sum(x, axis=0)\n",
    "\n",
    "\n",
    "def periodic_convolve(x, y, P):\n",
    "    \"Periodic convolution of two signals x and y with period P.\"\n",
    "    x = periodic_summation(x, P)\n",
    "    h = periodic_summation(y, P)\n",
    "\n",
    "    return np.array([np.dot(np.roll(x[::-1], k + 1), h) for k in range(P)], float)\n",
    "\n",
    "\n",
    "# generate signals\n",
    "x = np.ones(L)\n",
    "h = sig.windows.triang(N)\n",
    "\n",
    "# linear convolution\n",
    "y1 = np.convolve(x, h, \"full\")\n",
    "# periodic convolution\n",
    "y2 = periodic_convolve(x, h, M)\n",
    "# linear convolution via periodic convolution\n",
    "xp = np.append(x, np.zeros(N - 1))\n",
    "hp = np.append(h, np.zeros(L - 1))\n",
    "y3 = periodic_convolve(xp, hp, L + N - 1)\n",
    "\n",
    "\n",
    "def plot_signal(x):\n",
    "    \"\"\"Plots the signals in stem plot.\"\"\"\n",
    "    plt.figure(figsize=(10, 3))\n",
    "    plt.stem(x)\n",
    "    plt.xlabel(r\"$k$\")\n",
    "    plt.ylabel(r\"$y[k]$\")\n",
    "    plt.axis([0, N + L, 0, 1.1 * x.max()])\n",
    "\n",
    "\n",
    "# plot results\n",
    "plot_signal(x)\n",
    "plt.title(\"Signal $x[k]$\")\n",
    "plot_signal(y1)\n",
    "plt.title(\"Linear convolution\")\n",
    "plot_signal(y2)\n",
    "plt.title(\"Periodic convolution with period M = %d\" % M)\n",
    "plot_signal(y3)\n",
    "plt.title(\"Linear convolution by periodic convolution\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise**\n",
    "\n",
    "* Change the lengths `L`, `N` and `M` and check how the results for the different convolutions change"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The Fast Convolution\n",
    "\n",
    "Using the above derived equality of the linear and periodic convolution one can express the linear convolution $y[k] = x_L[k] * h_N[k]$ by the DFT as\n",
    "\n",
    "\\begin{equation}\n",
    "y[k] = \\text{IDFT}_M \\{ \\; \\text{DFT}_M\\{ x_M[k] \\} \\cdot \\text{DFT}_M\\{ h_M[k] \\} \\; \\}\n",
    "\\end{equation}\n",
    "\n",
    "This operation requires three DFTs of length $M$ and $M$ complex multiplications. On first sight this does not seem to be an improvement, since one DFT/IDFT requires $M^2$ complex multiplications and $M \\cdot (M-1)$ complex additions. The overall numerical complexity is hence in the order of $\\mathcal{O}(M^2)$. The DFT can be realized efficiently by the [fast Fourier transformation](https://en.wikipedia.org/wiki/Fast_Fourier_transform) (FFT), which lowers the computational complexity to $\\mathcal{O}(M \\log_2 M)$. The resulting algorithm is known as *fast convolution* due to its computational efficiency. \n",
    "\n",
    "The fast convolution algorithm is composed of the following steps\n",
    "\n",
    "1. Zero-padding of the two input signals $x_L[k]$ and $h_N[k]$ to at least a total length of $M \\geq N+L-1$\n",
    "\n",
    "2. Computation of the DFTs $X[\\mu]$ and $H[\\mu]$ using a FFT of length $M$\n",
    "\n",
    "3. Multiplication of the spectra $Y[\\mu] = X[\\mu] \\cdot H[\\mu]$\n",
    "\n",
    "4. Inverse DFT of $Y[\\mu]$ using an inverse FFT of length $M$\n",
    "\n",
    "The overall complexity depends on the particular implementation of the FFT. Many FFTs are most efficient for lengths which are a power of two. It therefore can make sense, in terms of computational complexity, to choose $M$ as a power of two instead of the shortest possible length $N+L-1$. For real valued signals $x[k] \\in \\mathbb{R}$ and $h[k] \\in \\mathbb{R}$ the computational complexity can be reduced significantly by using a real valued FFT."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Example - Fast convolution\n",
    "\n",
    "The implementation of the fast convolution algorithm is straightforward. Most implementations of the FFT include zero-padding to a given length $M$, e.g in `numpy` by `numpy.fft.fft(x, M)`. In the following example an implementation of the fast convolution is shown. For illustration the convolution of a rectangular signal $x[k] = \\text{rect}_L[k]$ of length $L$ with a triangular signal $h[k] = \\Lambda_N[k]$ of length $N$ is considered."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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AgKMqqqqFttev379Sd+PYRjG6aefbpx++unG//73vzbrtPezbPosbr31VpvnL1myxJBklJWVGYZhGEeOHDEGDBhgXHPNNTb17r33XqN79+7GTz/9ZBiGYeTn5xuSjCVLltjUe+WVVwxJxvLly23ed/N9a+PGja3uL639H86fP99oq4s1ePBgIz093Xr//vvvb/X/dt68eYbJZDL27Nljs524uDjj6NGj1noFBQWGJOOll15qdXsAAM9jpBsA4DTnnXeeunXrpqCgIE2dOlWhoaFatWqVunY9NoXIf//7X33++ee69tprJUlHjx613i666CKVlZVpz549kqTk5GS98847uv/++7Vp0yb973//89j7OnjwoD7++GNddtll6t27t7U8ICBA1113nb777jtr3K4SERGh5ORkm7Jhw4bp22+/td7/17/+pdjYWMXHx9t8thdeeGGLU6O3b9+uiy++WH379lVAQIC6deum66+/Xg0NDfriiy9sthMaGqqJEyeeNMYvvvhCX331lX7zm9/IbDa3WseRz/Liiy9u8b4lWd97165dlZaWpjfeeMM64tvQ0KDnn39eM2fOVN++fSXJOhJ+/Ondl19+uXr16qX169ef9D0624YNGxQTE9Pi/3bOnDkyDKPF6P306dMVEBBgvX/8ZwEA8D4k3QAAp3nuuee0bds2bdiwQTfffLN2796tq6++2vp40ynG99xzj7p162Zzazpl+aeffpIk/fnPf9Z9992nt956SxMmTFBYWJhmzZrlkSXIfv75ZxmG0eopwgMHDpQkp5z2fiJNiWNzgYGBNj9G7N+/Xzt37mzx2QYFBckwDOtnu3fvXo0ZM0bff/+9/vSnP+n999/Xtm3brNciH/8DR3tnUv/xxx8lyXpde2sc+SyPf++BgYEt4rzhhhtUV1enl19+WdKx09zLyspsJvCrrKxU165dW0xUZzKZFBER4fL/w9ZUVlY6/bMAAHgXZi8HADjN2WefbZ08bcKECWpoaNCzzz6r1157TZdddpn69esnSVq4cKEuvfTSVl+jaXmtXr16KSsrS1lZWdq/f7911Ds1NVWff/65JMlsNrd6LWtTcuksoaGh6tKli8rKylo81jShV9N786R+/fqpR48e+sc//tHm45L01ltv6eDBg3rjjTc0ePBg6+NFRUWtPs9kMrVr+03J7HfffddmHVd9lk2jxbm5ubr55puVm5urgQMHasqUKdY6ffv21dGjR/Xjjz/aJN6GYai8vFwjRoxo8/WbRu6Pv+67o/ta3759vX6/AgB0DCPdAACXWbJkiUJDQ/X73/9ejY2NOuusszRkyBDt2LFDSUlJrd6CgoJavM6AAQM0Z84cXX311dqzZ48OHTok6dhM0F988YVNIlRZWaktW7acNDZ7Rgh79eqlkSNH6o033rCp39jYqLy8PEVGRtpMFucpM2bM0FdffaW+ffu2+tk2zaTelEQ3fQbSscTz73//e4e2f+aZZ+r000/XP/7xjzYnJXPlZzl37lx9/PHH+uCDD7RmzRqlp6fbnIrdtIRb88nnJOn111/XwYMHT7jEW9Nnt3PnTpvy1atXt6hrz741adIklZSUqLCw0Kb8ueeek8lk0oQJE076GgAA78ZINwDAZUJDQ7Vw4ULde++9evHFF5WWlqa//e1vmjZtmi688ELNmTNHp5xyiqqqqrR7924VFhbq1VdflXRsqacZM2Zo2LBhCg0N1e7du/X8888rJSXFukb0ddddp7/97W9KS0vTTTfdpMrKSi1ZskTBwcEnjS02NlaStHz5cgUFBclsNisqKqrV07glKTs7W5MnT9aECRN0zz33qHv37lq2bJmKi4v10ksvtXs02JXuvPNOvf766xo7dqzuuusuDRs2TI2Njdq7d6/effdd3X333Ro5cqQmT56s7t276+qrr9a9996ruro65eTk6Oeff+5wDEuXLlVqaqrOO+883XXXXTr11FO1d+9e/fvf/9YLL7wgyXWf5dVXX62MjAxdffXVqq+vb3Ht9uTJk3XhhRfqvvvuU01NjUaPHq2dO3cqMzNTCQkJuu6669p87YiICF1wwQXKzs5WaGioBg8erPXr11tnq28uLi5OkvT4449r2rRpCggI0LBhw9S9e/cWde+66y4999xzmj59uh5++GENHjxYa9eu1bJlyzRv3jyv+DEHANAxjHQDAFxqwYIFOvXUU/Xwww+roaFBEyZMUEFBgfr06aM777xTF1xwgebNm6f33ntPF1xwgfV5EydO1OrVqzV37lxNmTJFS5Ys0fXXX681a9ZY64wePVorV67Url27NHPmTP3hD3/QwoULW127+3hRUVF6+umntWPHDo0fP14jRoywee3jjRs3Ths2bFCvXr00Z84cXXXVVaqurtbq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h+vMM8/UTTfdpIqKCk+HBC9RXV0tSQoLC5NEO4MTO35/aUIbg9Y0NDTo5Zdf1sGDB5WSkuJ37QtJtxv99NNPamho0IABA2zKBwwYoPLycg9FBW82cuRIPffcc/r3v/+tv//97yovL9eoUaNUWVnp6dDg5ZraFNob2GPatGl64YUXtGHDBj355JPatm2bJk6cqPr6ek+HBg8zDEMZGRk6//zzFRsbK4l2Bm1rbX+RaGPQ0meffabevXsrMDBQt9xyi958803FxMT4XfvS1dMBdEYmk8nmvmEYLcoA6djBqUlcXJxSUlJ0+umna+XKlcrIyPBgZPAVtDewx5VXXmn9OzY2VklJSRo8eLDWrl2rSy+91IORwdNuu+027dy5Ux988EGLx2hncLy29hfaGBzvrLPOUlFRkX755Re9/vrrSk9P1+bNm62P+0v7wki3G/Xr108BAQEtfp2pqKho8SsO0JpevXopLi5OX375padDgZdrmuWe9gYdYbFYNHjwYNqcTm7BggVavXq1Nm7cqMjISGs57Qxa09b+0hraGHTv3l1nnHGGkpKSlJ2dreHDh+tPf/qT37UvJN1u1L17d5177rlat26dTfm6des0atQoD0UFX1JfX6/du3fLYrF4OhR4uaioKEVERNi0N4cPH9bmzZtpb9BulZWV2rdvH21OJ2UYhm677Ta98cYb2rBhg6Kiomwep51BcyfbX1pDG4PjGYah+vp6v2tfOL3czTIyMnTdddcpKSlJKSkpWr58ufbu3atbbrnF06HBC91zzz1KTU3VqaeeqoqKCv3hD39QTU2N0tPTPR0avMCBAwf03//+13q/tLRURUVFCgsL06mnnqo777xTixcv1pAhQzRkyBAtXrxYPXv21DXXXOPBqOFJJ9pnwsLCtGjRIs2ePVsWi0XffPONHnjgAfXr10+XXHKJB6OGp8yfP18vvviiVq1apaCgIOuIU0hIiHr06CGTyUQ7A6uT7S8HDhygjYGNBx54QNOmTdOgQYNUW1url19+WZs2bVJ+fr7/tS8emze9E1u6dKkxePBgo3v37kZiYqLNUgpAc1deeaVhsViMbt26GQMHDjQuvfRSY9euXZ4OC15i48aNhqQWt/T0dMMwji3nk5mZaURERBiBgYHG2LFjjc8++8yzQcOjTrTPHDp0yJgyZYrRv39/o1u3bsapp55qpKenG3v37vV02PCQ1vYVSUZubq61Du0Mmpxsf6GNwfFuuOEGa07Uv39/Y9KkSca7775rfdyf2heTYRiGO5N8AAAAAAA6C67pBgAAAADARUi6AQAAAABwEZJuAAAAAABchKQbAAAAAAAXIekGAAAAAMBFSLoBAAAAAHARkm4AAAAAAFyEpBsAAAAAABch6QYAAAAAwEVIugEA6MTuvvtupaamejoMAAD8Fkk3AACdWFFRkeLj4z0dBgAAfoukGwCATmzHjh1KSEjwdBgAAPgtkm4AADqpffv2qbKy0jrS/csvvyg1NVWjRo1SWVmZZ4MDAMBPkHQDANBJFRUVKSQkRFFRUfrss880YsQIWSwWbdq0SRaLxdPhAQDgF0i6AQDopIqKijR8+HC99NJLGjt2rO655x4tX75c3bt393RoAAD4DZNhGIangwAAAO43e/Zsbdy4UZL0r3/9S6NGjfJwRAAA+B9GugEA6KSKioo0e/Zs1dXV6ZdffvF0OAAA+CVGugEA6IRqa2sVEhKiTz/9VDt27NAdd9yhLVu26JxzzvF0aAAA+JWung4AAAC4X1FRkQICAhQTE6OEhATt2rVLqampKigoUL9+/TwdHgAAfoPTywEA6IR27NihoUOHKjAwUJL0+OOPKyYmRpdeeqkOHz7s4egAAPAfnF4OAAAAAICLMNINAAAAAICLkHQDAAAAAOAiJN0AAAAAALgISTcAAAAAAC5C0g0AAAAAgIuQdAMAAAAA4CIk3QAAAAAAuAhJNwAAAAAALkLSDQAAAACAi5B0AwAAAADgIiTdAAAAAAC4CEk3AAAAAAAuQtINAAAAAICLkHQDAAAAAOAiJN0AAAAAALgISTcAAAAAAC5C0g0AcLkVK1bIZDJZb127dpXFYtFVV12lL7/80tPhSZJMJpMWLVpkvV9SUqJFixbpm2++cfq21q9fr6SkJPXq1Usmk0lvvfVWm3W3b9+ucePGKSQkRCaTSU8//bRTY3Hl+/Rmc+bM0WmnnebQc7ds2aJFixbpl19+afHY+PHjNX78+A7FBgDwL109HQAAoPPIzc3V0KFDVVdXpw8//FCPPvqoNm7cqM8//1yhoaGeDs9GSUmJsrKyNH78eIeTs9YYhqErrrhCZ555plavXq1evXrprLPOarP+DTfcoIMHD+rll19WaGioU2ORXPc+/dmWLVuUlZWlOXPmqE+fPjaPLVu2zDNBAQC8Fkk3AMBtYmNjlZSUJOnYiGBDQ4MyMzP11ltvae7cuR6Ozj1++OEHVVVV6ZJLLtGkSZNOWr+4uFg33XSTpk2b5obo0FExMTGeDgEA4GU4vRwA4DFNCfj+/fttyj/55BNdfPHFCgsLk9lsVkJCgv75z3/a1Dl06JDuueceRUVFyWw2KywsTElJSXrppZesddo61fdkpxavWLFCl19+uSRpwoQJ1tPiV6xYccL388EHH2jSpEkKCgpSz549NWrUKK1du9b6+KJFixQZGSlJuu+++2QymdqMo+mU/KNHjyonJ8cagyT9+OOPuvXWWxUTE6PevXsrPDxcEydO1Pvvv9/idXJycjR8+HD17t1bQUFBGjp0qB544IEOvc/PP/9cV199tQYMGKDAwECdeuqpuv7661VfX2+tU1xcrJkzZyo0NFRms1nx8fFauXKlzets2rRJJpNJL730kh588EENHDhQwcHBuuCCC7Rnzx5rvTvvvFO9evVSTU1Ni1iuvPJKDRgwQEeOHJEkNTY2asmSJRo6dKgCAwMVHh6u66+/Xt99990J39M333zT5ntvfunBokWL9H//93+SpKioKOtntmnTJkmt73NVVVW69dZbdcopp6h79+6Kjo7Wgw8+aPN5NW3ntttu0/PPP6+zzz5bPXv21PDhw/Wvf/3rhLEDALwbSTcAwGNKS0slSWeeeaa1bOPGjRo9erR++eUXPfPMM1q1apXi4+N15ZVX2iREGRkZysnJ0e233678/Hw9//zzuvzyy1VZWdnhuKZPn67FixdLkpYuXaqtW7dq69atmj59epvP2bx5syZOnKjq6mr9v//3//TSSy8pKChIqampeuWVVyRJN954o9544w1J0oIFC7R161a9+eabbcawdetWSdJll11mjUE6lsRJUmZmptauXavc3FxFR0dr/Pjx1uRPkl5++WXdeuutGjdunN5880299dZbuuuuu3Tw4EGH3+eOHTs0YsQIffTRR3r44Yf1zjvvKDs7W/X19Tp8+LAkac+ePRo1apR27dqlP//5z3rjjTcUExOjOXPmaMmSJS1e84EHHtC3336rZ599VsuXL9eXX36p1NRUNTQ0SDp2iv2hQ4da/PDyyy+/aNWqVUpLS1O3bt0kSfPmzdN9992nyZMna/Xq1XrkkUeUn5+vUaNG6aeffmrzfbXXjTfeqAULFkiS3njjDetnlpiY2Gr9uro6TZgwQc8995wyMjK0du1apaWlacmSJbr00ktb1F+7dq3++te/6uGHH9brr7+usLAwXXLJJfr66687HDsAwEMMAABcLDc315BkfPTRR8aRI0eM2tpaIz8/34iIiDDGjh1rHDlyxFp36NChRkJCgk2ZYRjGjBkzDIvFYjQ0NBiGYRixsbHGrFmzTrjdcePGGePGjWtRnp6ebgwePNimTJKRmZlpvf/qq68akoyNGze26z2ed955Rnh4uFFbW2stO3r0qBEbG2tERkYajY2NhmEYRmlpqSHJ+OMf/9iu15VkzJ8//4R1jh49ahw5csSYNGmScckll1jLb7vtNqNPnz4nfK6973PixIlGnz59jIqKijbrXHXVVUZgYKCxd+9em/Jp06YZPXv2NH755RfDMAxj48aNhiTjoosusqn3z3/+05BkbN261VqWmJhojBo1yqbesmXLDEnGZ599ZhiGYezevduQZNx666029T7++GNDkvHAAw9Yy47fB5r+X3Jzc1u8n+P3jT/+8Y+GJKO0tLRF3eP3uWeeecaQZPzzn/+0qff4448bkox3333XZjsDBgwwampqrGXl5eVGly5djOzs7BbbAgD4Bka6AQBuc95556lbt24KCgrS1KlTFRoaqlWrVqlr12NTjPz3v//V559/rmuvvVaSdPToUevtoosuUllZmfW04+TkZL3zzju6//77tWnTJv3vf//z2Ps6ePCgPv74Y1122WXq3bu3tTwgIEDXXXedvvvuO5vTpZ3hmWeeUWJiosxms7p27apu3bpp/fr12r17t7VOcnKyfvnlF1199dVatWpVh0d6Dx06pM2bN+uKK65Q//7926y3YcMGTZo0SYMGDbIpnzNnjg4dOmQdsW9y8cUX29wfNmyYJOnbb7+1ls2dO1dbtmyx+Rxzc3M1YsQIxcbGSjp2lkTTdppLTk7W2WefrfXr17fznTrPhg0b1KtXL1122WU25U0xHh/ThAkTFBQUZL0/YMAAhYeH23wWAADfQtINAHCb5557Ttu2bdOGDRt08803a/fu3br66qutjzdd233PPfeoW7duNrdbb71VkqyJ45///Gfdd999euuttzRhwgSFhYVp1qxZHlmC7Oeff5ZhGLJYLC0eGzhwoCQ55bT3Jk899ZTmzZunkSNH6vXX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",
      "text/plain": [
       "<Figure size 1000x600 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "L = 16  # length of signal x[k]\n",
    "N = 16  # length of signal h[k]\n",
    "M = N + L - 1\n",
    "\n",
    "# generate signals\n",
    "x = np.ones(L)\n",
    "h = sig.windows.triang(N)\n",
    "\n",
    "# linear convolution\n",
    "y1 = np.convolve(x, h, \"full\")\n",
    "# fast convolution\n",
    "y2 = np.fft.ifft(np.fft.fft(x, M) * np.fft.fft(h, M))\n",
    "\n",
    "plt.figure(figsize=(10, 6))\n",
    "plt.subplot(211)\n",
    "plt.stem(y1)\n",
    "plt.xlabel(r\"$k$\")\n",
    "plt.ylabel(r\"$y[k] = x_L[k] * h_N[k]$\")\n",
    "plt.title(\"Result of linear convolution\")\n",
    "\n",
    "plt.subplot(212)\n",
    "plt.stem(y1)\n",
    "plt.xlabel(r\"$k$\")\n",
    "plt.ylabel(r\"$y[k] = x_L[k] * h_N[k]$\")\n",
    "plt.title(\"Result of fast convolution\")\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Example - Numerical complexity\n",
    "\n",
    "It was already argued that the numerical complexity of the fast convolution is considerably lower due to the usage of the FFT. The gain with respect to the convolution is evaluated in the following. In order to measure the execution times for both algorithms the `timeit` module is used. The algorithms are evaluated for the convolution of two random signals $x_L[k]$ and $h_N[k]$ of length $L=N=2^n$ for $n=0, 1, \\dots, 16$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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un3+3//9nyIjIzVjxgx98skniouLU/v27XXp0qVMvff9+/eXm5ub8xbEnTt3qkWLFi63qS5YsEDBwcHy9fXVRx99pM8++0xFihRRSEiIM6R76qmn9OKLL0qSli5dqu3bt2v79u164IEH1KZNG8XGxmrnzp3Ofa5bt05eXl6KjIx0tq1fv16GYahNmzaSrs0ua968uT766CMNGjRIq1ev1vDhwzV//nx16tRJhmE4tx0wYIAGDx6sNm3aaPny5Zo9e7YOHjyoJk2a6I8//nA555iYGD3xxBPq2bOnVqxYoXbt2mnkyJFasGDBTd8rwzD08MMP67///a9efvllLVu2TI0aNVK7du0y9V5L0unTp9WzZ0/16NFDq1at0sCBA7N0nk8++aReeukl1a9fX4sXL9aiRYvUqVMnZ7CzbNkyVahQQffff7/zM7j+NuuEhAR9/fXXzttbZ8+erddff12SNG/ePG3fvl2jR4+WJB07dkyNGzfWnDlztHbtWo0ZM0bffvutmjVr5nKt9OrVS8uXL9eYMWO0du1avf/++2rTpo3OnTvnPEbTpk0VEBDgrGn79u03fZ/GjBmjJ554QqVKldL8+fO1bNky9enTR7/88ouzz6RJk9S/f39Vr15dS5cu1TvvvKPvv/9ejRs31s8//+yyP4fDoU6dOql169b68ssv1a9fP7399tt68803JUk2m009e/bUkiVLFBsb67Ltp59+qoSEBPXt21dS1q/Rf+JWn+Pfbdq0Sa1atdKlS5f0wQcf6NNPP5WPj486duyoxYsXp+v/1FNPyWazaeHChZoyZYo2btzoDGoBAMh2BgAAyHUxMTGGJOPxxx/PVP9Dhw4ZkoyBAwe6tH/77beGJOO1115ztjVv3tyQZOzevdvZdu7cOcNqtRpeXl7G77//7mzft2+fIcn497//7WwbO3asIckYMmSIy7E++eQTQ5KxYMGCDGtMTU01HA6HsWnTJkOSsX//fue6Pn36GJKMDz/8MN12ffr0McqWLetcnjZtmiHJuHjx4g3fjxEjRhiSjG+//dal/bnnnjMsFotx+PBhwzAM48SJE4Yko2bNmkZycrKz386dOw1JxqeffnrDYxiGYcybN8+QZHTp0sWl/ZtvvjEkGePHjzcMwzDi4uKMIkWKGB07dnTpl5KSYtSuXdto0KCBs23q1KmGJOPEiRMufePi4gwPDw/jjTfeMAzDMH777TdDkjF8+HDDy8vLSEhIMAzDMJ5++mmjVKlSzu0mTZpkuLm5Gbt27XLZ3xdffGFIMlatWmUYhmFs377dkGS89dZbLv1+/fVXw8vLyxg2bJizLe1n6O/vb7Vq1YyQkJCbvmerV682JBnvvPOOS/uECRMMScbYsWOdbWnv7/XvRdqx169f77J9Zs9z8+bNhiRj1KhRN62zevXqRvPmzTNct3z5csNqtRpnzpxJV+vfj3+9tGvgl19+MSQZX375pXNdwYIFjcGDB9+0ptDQUJdr4WaOHz9uWK1W44knnrhhnwsXLhheXl5G+/btXdpPnjxp2O12o0ePHs62tGv0s88+c+nbvn17o3Llys7l77//3pBkzJ0716VfgwYNjLp16zqXM3uNGoaR7ucibQz6u4x+Xm70OaZd+/PmzXO2NWrUyChevLhx+fJlZ1tycrJRo0YNo3Tp0kZqaqrLcf4+3k6ZMsWQZJw+fTrd8QAAuF3MoAMA4A6wYcMGSXLeVpemQYMGqlq1qsttlNK1L0ivW7euc7lIkSIqXry46tSpo1KlSjnbq1atKkkuM27SPPHEEy7Ljz76qNzd3Z21SNLx48fVo0cPBQQEyGq1ymazqXnz5pKU7hY6Sc4ZSTdTv3595/E+++wz/f777+n6REVFqVq1aum+C+zJJ5+UYRiKiopyaQ8NDZXVanUu16pVS1LG552Rv78XTZo0UdmyZZ3vxbZt23T+/Hn16dNHycnJzj+pqalq27atdu3ale42zL/z9vZW48aNnbc8RkZGys/PT6+++qqSkpK0detWSddm1aXNnpOklStXqkaNGqpTp47LsUNCQpy3z6b1s1gs6tmzp0u/gIAA1a5d29kvTUBAQLr3t1atWrd8z9Lek7+/Zz169LjpdtcrXLiwWrVq5dKW2fNcvXq1JOn555/P9PH+bsmSJXrwwQcz9f14Z86c0bPPPqvAwEC5u7vLZrOpbNmyklyvgQYNGmj+/PkaP368duzY4TK77p+IjIxUSkrKTc9z+/btunr1arpxIzAwUK1atUo3blgslnSzX//+mdesWVN169Z13jIvXTvPnTt3utyGntVrNKfFxcXp22+/1SOPPKKCBQs6261Wq3r16qXffvtNhw8fdtnm+q8YkLI+bgAAkBUEdAAAmMDf31/e3t46ceJEpvqn3QaX0dMuS5Uq5VyfpkiRIun6eXh4pGv38PCQdO2Wvr8LCAhwWXZ3d1fRokWdx7py5YoefPBBffvttxo/frw2btyoXbt2aenSpZKkq1evumzv7e0tX1/fm56nJD300ENavny5kpOT1bt3b5UuXVo1atTQp59+6uxz7ty5G74XaeuvV7RoUZfltO/8+3uNN/L39yKtLe04abeHPvLII7LZbC5/3nzzTRmGofPnz9/yOG3atNGOHTsUFxendevWqVWrVipatKjq1q2rdevW6cSJEzpx4oRLQPfHH3/o+++/T3dcHx8fGYbhvP35jz/+kGEYKlGiRLq+O3bsSHeb9N/fs7T37Vbv2blz55w/K7d6D28ko882s+f5559/ymq1Zul413M4HPrqq68yFSanpqYqODhYS5cu1bBhw7R+/Xrt3LnT+f2G179XixcvVp8+ffT++++rcePGKlKkiHr37q2YmJh/VGfa90GWLl36hn2yOm54e3vL09PTpc1ut6cbH/r166ft27frp59+knTttl+73a7u3bu7HDsr12hOu3DhggzDyNVxAwCArOAprgAAmMBqtap169ZavXq1fvvtt5v+J1v6338UT58+na7vqVOn5O/vn+01xsTE6J577nEuJycn69y5c85aoqKidOrUKW3cuNE5a06Sy/eyXS8zX3ifpnPnzurcubMSExO1Y8cOTZo0ST169FC5cuXUuHFjFS1aVKdPn063Xdp36WX3+5FRiBITE6NKlSq5HG/mzJk3fHJkiRIlbnmc1q1ba/To0dq8ebPWr1+vsWPHOtvXrl2r8uXLO5fT+Pv7y8vLSx9++GGG+0yrzd/fXxaLRVu2bMnwoSQZtf0TRYsWTfezImX8Ht5IRj8rmT3PYsWKKSUlRTExMRmGMbeybt06Xbp0SV26dLll3wMHDmj//v2aP3+++vTp42w/evRohvXNmDFDM2bM0MmTJ7VixQqNGDFCZ86c+UdPa06b3ffbb7/d8Hssrx83/u52xo3u3btr6NChmj9/viZMmKD//ve/evjhh1W4cGGXY//TazQtJExMTHT5ufx7iJwVhQsXlpubW66OGwAAZAUz6AAAMMnIkSNlGIaefvppJSUlpVufNpNHkvN2v79/Qf+uXbt06NAhl8Amu3zyyScuy5999pmSk5PVokULSf8LUf4e7Lz33nvZVoPdblfz5s2dX1L/3XffSboWUP3444/au3evS/+PP/5YFotFLVu2zLYapPTvxbZt2/TLL78434umTZvKz89PP/74o+rVq5fhn7TZijebhdOgQQP5+vpqxowZiomJUVBQkKRrM+u+++47ffbZZ6pWrZrLbcodOnTQsWPHVLRo0QyPm/ZUyw4dOsgwDP3+++8Z9qtZs2a2vFdp7/3f37OFCxfe1n4ze55pD6OYM2fOTfd3o9mAS5YsUaNGjVzC6Rv5p9dAmTJl9MILLygoKMjlZzgzMxTTBAcHy2q13vQ8GzduLC8vr3Tjxm+//aaoqKh/PG4ULlxYDz/8sD7++GOtXLlSMTEx6Z6yfDvXaNpn+f3337u0p42H18vse1agQAE1bNhQS5cudemfmpqqBQsWqHTp0rrvvvtuuR8AAHIKM+gAADBJ2pMfBw4cqLp16+q5555T9erV5XA49N1332nu3LmqUaOGOnbsqMqVK+uZZ57RzJkz5ebmpnbt2ik6OlqjR49WYGCghgwZku31LV26VO7u7goKCtLBgwc1evRo1a5dW48++qika9/DVrhwYT377LMaO3asbDabPvnkE+3fv/+2jjtmzBj99ttvat26tUqXLq2LFy/qnXfecfl+uyFDhujjjz9WaGio3njjDZUtW1Zff/21Zs+ereeeey7b/6O9e/duPfXUU+rWrZt+/fVXjRo1Svfcc48GDhwoSSpYsKBmzpypPn366Pz583rkkUdUvHhx/fnnn9q/f7/+/PNPZ5CSFoS988476tOnj2w2mypXriwfHx9ZrVY1b95cX331lcqXL6+KFStKuhYA2u12rV+/XoMGDXKpbfDgwVqyZIkeeughDRkyRLVq1VJqaqpOnjyptWvX6uWXX1bDhg3VtGlTPfPMM+rbt692796thx56SAUKFNDp06e1detW1axZU88999xtv1fBwcF66KGHNGzYMMXFxalevXr65ptv9N///ve29pvZ83zwwQfVq1cvjR8/Xn/88Yc6dOggu92u7777Tt7e3s6n6NasWVOLFi3S4sWLVaFCBXl6eqpatWr68ssvNWLEiEzVVKVKFVWsWFEjRoyQYRgqUqSIvvrqK5en7krSpUuX1LJlS/Xo0UNVqlSRj4+Pdu3apYiICHXt2tXZr2bNmlq6dKnmzJmjunXrys3NTfXq1cvw2OXKldNrr72mcePG6erVq+revbsK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gOZnX+ZTRMTIkSPj1VdfjS1btkT37t1jwYIFMXTo0MaOCzQj+zKffv3rX8fcuXNjwIABte8P9fDDD0f//v0bOy7QjOzLfPrTn/4UV155ZWRZFlmWxfe+970YMGBAo2dV0AHsxhffUy7Lsjrbzj333Dj33HMbOxbAl84nnyoNpLK3+TRs2LDYvn17ilgAe51PQ4YMifLy8gSp6vInrgA76dy5cxQUFNRZjRIRsWHDhl3+qwtAYzKfgHxlPgH56mCaTwo6gJ20atUqhgwZEmVlZXW2l5WVxcknn5woFYD5BOQv8wnIVwfTfPInrkCzs3nz5njzzTdrb69duzbKy8ujY8eOcdRRR8V1110Xl156aRx//PFx0kknxYMPPhhvv/12fOc730mYGmgOzCcgX5lPQL5qKvMpl2VZljoEQGNavHhxnH766btsv/zyy2PWrFkRETFjxoyYNm1arF+/Pvr16xd33313nHrqqY2cFGhuzCcgX5lPQL5qKvNJQQcAAAAACXkPOgAAAABISEEHAAAAAAkp6AAAAAAgIQUdAAAAACSkoAMAAACAhBR0AAAAAJCQgg4AAAAAElLQAQAAAEBCCjoAgAYya9asaN++fYOfp7KyMs4///woKSmJXC4Xn3zyyW73e/DBB6O0tDRatGgR99xzT4PnOpgsXrx4r9+7fbVu3brI5XJRXl5eL7kAgOZBQQcA8AXvv/9+TJw4MXr27BmtW7eOI444IoYNGxYzZ86MysrKfT7ON7/5zXjjjTcaMOlnZs+eHS+++GIsXbo01q9fH+3atdtln4qKivje974XN954Y7z77rvx93//9wd83uHDh8e11157wMc5WF1xxRUxZsyYOttKS0tj/fr10a9fvzShAICDUsvUAQAA8skf/vCHOOWUU6J9+/bxL//yL9G/f//Ytm1bvPHGG/Ef//Ef0bVr1zj33HP36ViHHHJIHHLIIQ2cOOKtt96K3r1777UUevvtt6O6ujrOOeec6NKlS4Nnaq4KCgriyCOPTB0DADjIWEEHALCTq666Klq2bBnLly+Piy66KHr37h39+/eP888/P37xi1/E6NGja/e96667on///tG2bdsoLS2Nq666KjZv3lx7/xf/xHXy5MkxaNCgePjhh6NHjx7Rrl27uPjii2PTpk17zTRv3rzo27dvFBUVRY8ePeLOO++svW/48OFx5513xpIlSyKXy8Xw4cN3efysWbOif//+ERFx9NFHRy6Xi3Xr1sVbb70V5513XhxxxBFx6KGHxtChQ+PZZ5+t89gZM2bEscceW7uS8IILLoiIz1aPvfDCC/HjH/84crlc7TF3p6qqKiZNmhSlpaVRVFQUxx57bPz0pz+tvf+FF16IE044IYqKiqJLly7xgx/8ILZt21bnGq+55pqYNGlSdOzYMY488siYPHly7f2XXHJJXHzxxXXOWV1dHZ07d46HHnqoNsM111wThx9+eLRu3TqGDRsWy5Yt2+P3/POf1c7uueee6NGjR+39s2fPjieffLL2+hcvXrzbP3E90OsDAJo+BR0AwA4fffRR/PKXv4wJEyZE27Ztd7tPLper/bpFixZx7733xuuvvx6zZ8+O5557LiZNmrTXc7z11luxcOHCeOqpp+Kpp56KF154Ie6444497r9ixYq46KKL4uKLL47f/e53MXny5PjRj34Us2bNioiI+fPnx/jx4+Okk06K9evXx/z583c5xje/+c3a4u2VV16J9evXR2lpaWzevDlGjRoVzz77bKxcuTJGjhwZo0ePjrfffjsiIpYvXx7XXHNN3HLLLbFmzZp4+umn49RTT42IiB//+Mdx0kknxfjx42P9+vW1x9ydyy67LB5//PG49957Y9WqVTFz5sw49NBDIyLi3XffjVGjRsXQoUPjtddeiwceeCB++tOfxm233VbnGLNnz462bdvGyy+/HNOmTYtbbrklysrKIiJi3Lhx8fOf/7xOOfrMM8/Eli1b4vzzz4+IiEmTJsW8efNi9uzZ8eqrr0bPnj1j5MiR8ec//3mvP689uf766+Oiiy6Kv/3bv629/pNPPnmX/erj+gCAZiADACDLsiz7zW9+k0VENn/+/DrbO3XqlLVt2zZr27ZtNmnSpD0+/oknnsg6depUe/uhhx7K2rVrV3v75ptvztq0aZNVVFTUbrvhhhuyE088cY/HHDt2bDZixIg622644YasT58+tbcnTpyYnXbaaXu9tpUrV2YRka1du3av+/Xp0ye77777sizLsnnz5mUlJSV18u7stNNOyyZOnLjX461ZsyaLiKysrGy39//jP/5j1qtXr2z79u212+6///7s0EMPzWpqamrPM2zYsDqPGzp0aHbjjTdmWZZlW7duzTp37pz97Gc/q73/kksuyS688MIsy7Js8+bNWWFhYTZnzpza+7du3Zp17do1mzZtWpZlWfb8889nEZF9/PHHWZZ99rMaOHBgnXPefffd2Ve+8pXa25dffnl23nnn1dln7dq1WURkK1eurLfrAwCaPivoAAC+YOdVchGfrTorLy+Pvn37RlVVVe32559/PkaMGBHdunWL4uLiuOyyy+Kjjz6KLVu27PHYPXr0iOLi4trbXbp0iQ0bNuxx/1WrVsUpp5xSZ9spp5wS//u//xs1NTX7e2l1bNmyJSZNmhR9+vSJ9u3bx6GHHhqrV6+uXUE3YsSI+MpXvhJHH310XHrppTFnzpz9+pCMiIjy8vIoKCiI0047bbf3r1q1Kk466aQ63/NTTjklNm/eHH/6059qtw0YMKDO43b+vhUWFsaFF14Yc+bMqb2uJ598MsaNGxcRn61arK6urvN9LCwsjBNOOCFWrVq1X9ezv+rj+gCApk9BBwCwQ8+ePSOXy8Xq1avrbD/66KOjZ8+edT7w4Y9//GOMGjUq+vXrF/PmzYsVK1bE/fffHxGfvf/ZnhQWFta5ncvlYvv27XvcP8uyXQrDLMv2+Zr25oYbboh58+bF7bffHi+++GKUl5dH//79Y+vWrRERUVxcHK+++mo89thj0aVLl7jpppti4MCB8cknn+zzOb7sQzL2dn07b/+y79u4cePi2WefjQ0bNsTChQujdevWcfbZZ+/xeHs69+datGixy/d5bz/XPamv6wMAmjYFHQDADp06dYoRI0bE9OnT97oKLuKz92fbtm1b3HnnnfFXf/VX8bWvfS3ee++9es/Up0+feOmll+psW7p0aXzta1+LgoKCAzr2iy++GFdccUV84xvfiP79+8eRRx65ywc9tGzZMs4888yYNm1a/Pa3v41169bFc889FxERrVq1+tJVfP3794/t27fHCy+8sNv7+/TpE0uXLq1Thi1dujSKi4ujW7du+3wtJ598cpSWlsbcuXNjzpw5ceGFF0arVq0i4rPitVWrVnW+j9XV1bF8+fLo3bv3bo932GGHxfvvv18n184f/BCxb9dfX9cHADRtCjoAgJ3MmDEjtm3bFscff3zMnTs3Vq1aFWvWrIlHHnkkVq9eXVuKHXPMMbFt27a477774g9/+EM8/PDDMXPmzHrP8/3vfz9+9atfxa233hpvvPFGzJ49O6ZPnx7XX3/9AR+7Z8+eMX/+/CgvL4/XXnstxo4dW2fV1lNPPRX33ntvlJeXxx//+Mf42c9+Ftu3b49evXpFxGd/rvvyyy/HunXr4sMPP9ztiq8ePXrE5ZdfHt/+9rdj4cKFsXbt2li8eHE88cQTEfHZp+a+8847cfXVV8fq1avjySefjJtvvjmuu+66aNFi3/+pmsvlYuzYsTFz5swoKyuLv/u7v6u9r23btvHd7343brjhhnj66afj97//fYwfPz4qKyvjyiuv3O3xhg8fHv/3f/8X06ZNi7feeivuv//++O///u9dru23v/1trFmzJj788MPdrrCrr+sDAJo2/yoAANjJMcccEytXrowzzzwzfvjDH8bAgQPj+OOPj/vuuy+uv/76uPXWWyMiYtCgQXHXXXfFv/7rv0a/fv1izpw5MXXq1HrPM3jw4HjiiSfi8ccfj379+sVNN90Ut9xyS1xxxRUHfOy77747OnToECeffHKMHj06Ro4cGYMHD669v3379jF//vw444wzonfv3jFz5sx47LHHom/fvhHx2SeZFhQURJ8+feKwww6rfe+6L3rggQfiggsuiKuuuiqOO+64GD9+fO0KxW7dusWiRYvilVdeiYEDB8Z3vvOduPLKK+Of//mf9/t6xo0bF7///e+jW7duu7xv3x133BHnn39+XHrppTF48OB4880345lnnokOHTrs9li9e/eOGTNmxP333x8DBw6MV155ZZdSdPz48dGrV684/vjj47DDDotf//rXuxynPq8PAGi6cll9vYkJAAAAALDfrKADAAAAgIQUdAAAAACQkIIOAAAAABJS0AEAAABAQgo6AAAAAEhIQQcAAAAACSnoAAAAACAhBR0AAAAAJKSgAwAAAICEFHQAAAAAkJCCDgAAAAASUtABAAAAQEL/D1TJhpgPbpYfAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1500x1000 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import timeit\n",
    "\n",
    "n = np.arange(17)  # lengths = 2**n to evaluate\n",
    "reps = 50  # number of repetitions for timeit\n",
    "\n",
    "gain = np.zeros(len(n))\n",
    "for N in n:\n",
    "    length = 2**N\n",
    "    # setup environment for timeit\n",
    "    tsetup = (\n",
    "        \"import numpy as np; from numpy.fft import rfft, irfft; \\\n",
    "            x=np.random.randn(%d); h=np.random.randn(%d)\"\n",
    "        % (length, length)\n",
    "    )\n",
    "    # direct convolution\n",
    "    tc = timeit.timeit('np.convolve(x, x, mode=\"full\")', setup=tsetup, number=reps)\n",
    "    # fast convolution\n",
    "    tf = timeit.timeit(\n",
    "        \"irfft(rfft(x, %d) * rfft(h, %d))\" % (2 * length, 2 * length),\n",
    "        setup=tsetup,\n",
    "        number=reps,\n",
    "    )\n",
    "    # speedup by using the fast convolution\n",
    "    gain[N] = tc / tf\n",
    "\n",
    "# show the results\n",
    "plt.figure(figsize=(15, 10))\n",
    "plt.barh(n, gain, log=True)\n",
    "plt.plot([1, 1], [-1, n[-1] + 1], \"r-\")\n",
    "plt.yticks(n, 2**n)\n",
    "plt.xlabel(\"Gain of fast convolution\")\n",
    "plt.ylabel(\"Length of signals\")\n",
    "plt.title(\"Comparison between direct/fast convolution\")\n",
    "plt.grid()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise**\n",
    "\n",
    "* When is the fast convolution more efficient/faster than a direct convolution? \n",
    "* Why is it slower below a given signal length?\n",
    "* Is the trend of the gain as expected by the numerical complexity of the FFT?\n",
    "\n",
    "Solution: The gain in execution time of a fast convolution over a direct implementation of the the convolution for different signal lengths depends heavily on the particular implementation and hardware used. The fast convolution in this example is faster for two signals having a length equal or larger than 1024 samples. Discarding the outliers and short lengths, the overall trend in the gain is approximately logarithmic as predicted above."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "nbsphinx": "hidden"
   },
   "source": [
    "**Copyright**\n",
    "\n",
    "This notebook is provided as [Open Educational Resource](https://en.wikipedia.org/wiki/Open_educational_resources). Feel free to use the notebook for your own purposes. The text is licensed under [Creative Commons Attribution 4.0](https://creativecommons.org/licenses/by/4.0/), the code of the IPython examples under the [MIT license](https://opensource.org/licenses/MIT). Please attribute the work as follows: *Sascha Spors, Digital Signal Processing - Lecture notes featuring computational examples*."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
